Я могу успешно отправлять текстовые сообщения (с 201 ответом), но когда я изменяю свой параметр типа на «video» и добавляю соответствующие параметры вставки и заголовка, я получаю 500 ответов от Tubmlr.
Их документация довольно легка в деталях того, что мне нужно дать для встраиваемого значения, но я попытался связать напрямую с файлом
Из того, что я видел на других досках объявлений, это не редкость, но ни у кого нет ответа. Код, который я использую, приведен ниже.
NSString *apiCallURL = [NSString stringWithFormat:@"http://api.tumblr.com/v2/blog/%@/post", self.baseURL];
NSLog(@"API Call URL: %@", apiCallURL);
NSURL *url = [NSURL URLWithString:apiCallURL];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setHTTPMethod:@"POST"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setValue:@"utf-8" forHTTPHeaderField:@"charset"];
NSMutableString *body = [[NSMutableString alloc] init]; //Using NSMutableString instead of stringWithFormat to avoid problems with % encoding
[body appendFormat:@"type=video&caption=%@", caption];
[body appendString:@"&embed=EMBED CODE HERE"];
[request setHTTPBody:[body dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES]];
[body release], body = nil;
[self.authentication authorizeRequest:request];
NSError *error = nil;
NSHTTPURLResponse *response = nil;
NSData *data = [NSURLConnection sendSynchronousRequest:request
returningResponse:&response
error:&error];
if (error)
{
NSLog(@"Error! \n%@", error);
return;
}
if (data) {
// API fetch succeeded
NSString *str = [[[NSString alloc] initWithData:data
encoding:NSUTF8StringEncoding] autorelease];
NSLog(@"Sharing response (%d): %@", [response statusCode], str);
}
Я получаю вывод
Sharing response (500):
Код для встраивания, который я пытался использовать, работает через веб-интерфейс tumblr и является URL-версией следующего кода:
<embed width="480" height="360" src="http://www.keek.com/embed/decaaab" frameborder="0" allowfullscreen />