【问题标题】:Sending an image to a web service using their API URL使用 API URL 将图像发送到 Web 服务
【发布时间】:2014-04-09 21:01:35
【问题描述】:

我正在尝试使用 Bufferapp API 自动为社交网络创建一些缓冲区并让它们在自动时间发布。

我需要使用他们的 API,特别是 this method,在我的帖子中发送图片和文本。我几乎都想通了,但我想不出使用此 API 发送图像的正确方法。

我用谷歌搜索了一下,但我似乎无法找到一种方法来做到这一点。我见过的所有示例都通过 POST 发送整个图像,但它们似乎没有使用 API 格式。

换句话说,我怎么能做到这样?

https://webservice.com/api/send_post?access_token=123&text=huehuehue&image=__

编辑:我没有附加任何源代码,因为我不知道如何处理 NSImage 的“转换”为可以使用 API URL 发送的东西,但这是我正在尝试的代码生成:

NSOperationQueue *queue = [[NSOperationQueue alloc] init];
[queue addOperationWithBlock:^{
    NSURL *create = [NSURL URLWithString:[NSString stringWithFormat:@"https://api.bufferapp.com/1/updates/create.json?access_token=%@", kToken, nil]];
    NSString *text = @"text=%23Anime"; //Encoding so this is #Anime
    NSString *now = @"now=0";

    //Somehow add an NSImage to the http body.
}];

【问题讨论】:

    标签: objective-c macos http nsimage


    【解决方案1】:

    我设法调整了这个现有的问题:

    Objective C: How to upload image and text using HTTP POST?

    使用如下代码(急需美化):

    NSURL *create = [NSURL URLWithString:[NSString stringWithFormat:@"https://api.bufferapp.com/1/updates/create.json?access_token=%@", kToken, nil]];
    
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:create];
    request.HTTPMethod = @"POST";
    
    NSString *text = @"#Anime\r\n\r\>> Download Mignori: http://lnrs.me/mignori";
    NSString *now = @"0";
    NSString *shorten = @"0";
    
    NSImage *image = [[NSImage alloc] initWithContentsOfFile:self.folders[0]];
    
    NSData *imageData = [NSData dataWithContentsOfFile:self.folders[0]];
    
    NSMutableData *body = [NSMutableData data];
    
    NSString *boundary = [NSString stringWithString:@"---------------------------14737809831466499882746641449"];
    NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary];
    [request addValue:contentType forHTTPHeaderField: @"Content-Type"];
    
    //File
    [body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
    [body appendData:[[NSString stringWithString:@"Content-Disposition: attachment; name=\"media[picture]\"; filename=\".jpg\"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
    [body appendData:[[NSString stringWithString:@"Content-Type: application/octet-stream\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
    [body appendData:[NSData dataWithData:imageData]];
    [body appendData:[[NSString stringWithString:@"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
    
    [body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
    [body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"text\"\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
    [body appendData:[[NSString stringWithString:text] dataUsingEncoding:NSUTF8StringEncoding]];
    [body appendData:[[NSString stringWithString:@"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
    
    [body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
    [body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"now\"\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
    [body appendData:[[NSString stringWithString:now] dataUsingEncoding:NSUTF8StringEncoding]];
    [body appendData:[[NSString stringWithString:@"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
    
    [body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
    [body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"shorten\"\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
    [body appendData:[[NSString stringWithString:shorten] dataUsingEncoding:NSUTF8StringEncoding]];
    [body appendData:[[NSString stringWithString:@"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
    
    [body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
    [body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"profile_ids[]\"\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
    [body appendData:[[NSString stringWithString:@"52e99e2b2846b29e18000020"] dataUsingEncoding:NSUTF8StringEncoding]];
    [body appendData:[[NSString stringWithString:@"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
    
    [body appendData:[[NSString stringWithFormat:@"--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
    
    request.HTTPBody = body;
    
    //return and test
    NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多