我有一个应用程序可以向 Tumblr API 发出 OAuth 1.0a POST 请求。我一直在关注他们关于如何上传照片的文档,虽然我已经设置了参数,但它不起作用。
Tumblr API 文档声明您需要在参数中使用这些:
source - (string) - 图片来源网址
data - (Array URL-encoded binary contents) - 一个或多个图像文件(多次提交以创建幻灯片)
所以我按如下方式设置了我的 POST 请求,但我似乎无法让它工作。这是我的代码:
// Tumblr POST Request.
NSString *inputted_text = [inputted_text stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSData* imageData = UIImagePNGRepresentation(image_selected);
NSString *path = [NSString stringWithFormat:TUMBL_POST, tumblr_profilename];
NSDictionary *parameters;
if (media_post_check == 0) {
// Text post.
parameters = @{@"api_key" : TUMBL_CONSUMER_KEY,
@"type" : @"text",
@"body" : inputted_text};
}
else if (media_post_check == 1) {
// Photo post.
NSData *data_64 = [imageData base64EncodedDataWithOptions:0];
parameters = @{@"api_key" : TUMBL_CONSUMER_KEY,
@"type" : @"photo",
@"caption" : inputted_text,
@"data" : @[data_64]};
}
else if (media_post_check == 2) {
// Video post.
parameters = @{@"api_key" : TUMBL_CONSUMER_KEY,
@"type" : @"link",
@"title" : @"Hello there",
@"url" : pub_video_url};
}
// Build authorized request based on path, parameters, tokens, timestamp etc.
NSURLRequest *preparedRequest = [OAuth1Controller preparedRequestForPath:path parameters:parameters HTTPmethod:@"POST" oauthToken:token_tumblr oauthSecret:token_secret_tumblr];
NSData *urlData;
NSURLResponse *response;
NSError *error;
// Make synchronous request.
urlData = [NSURLConnection sendSynchronousRequest:preparedRequest returningResponse:&response error:&error];
NSLog(@"%@", response);
我需要发送图像数据或链接吗?我做错了什么?
更新 1
我现在收到此错误响应:
Error Domain=NSURLErrorDomain Code=-1005 "The network connection was lost." UserInfo=0x112a50a90 {NSUnderlyingError=0x10d6e1370 "The network connection was lost.", NSErrorFailingURLStringKey=http://api.tumblr.com/v2/blog/supertecnoboff.tumblr.com/post?api_key=wPqSZcRrJM4Rxu9oRECjcAzcvkq8EPwYq2LN98W13U39tDRPbZ&caption=Test%2520star&data%5B%5D=%3C6956424f%20527730206a........data...........14d6a%2048686871%204876672f%202f394763%2045684a68%205a574d41%2041414141%205355564f%20524b3543%205949493d%3E&type=photo, NSLocalizedDescription=The network connection was lost.}
谢谢你抽出时间,丹。
最佳答案
您正在尝试将图像的 NSDATA 对象作为 source
发送,API 需要一个源 URL。
source - (string) - The photo source URL
Base64 编码 NSDATA 对象并将 key 设置为 data
而不是 source
。
关于ios - 二进制图像 POST - iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23979312/