ios - 二进制图像 POST - iOS

标签 ios image post tumblr url-encoding

我有一个应用程序可以向 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/

相关文章:

iphone - 如何在后台处理调度异步进程?

ios - 有没有办法通过代码更改 iOS 模拟器上的语言环境/语言?

python - 使用 CImg 将图像文件转换为像素 vector ?

php - 将 POST 数据从 Objective-C 传递到 PHP

javascript - jQuery.post 并不总是发送表单数据

iphone - ZSync 教程 - 在设备之间同步 CoreData 数据

iphone - 主题/皮肤 iOS 应用程序的最佳实践?

javascript - 我们如何使用 jquery 获取图像的位置并在该位置放置其他图像

c - stbi_load_from_memory 没有正确读取图像尺寸

javascript - JQuery $.ajax(),$.post() 发送 GET 作为请求方法