2014-03-06 99 views
0

我试图使用Bufferapp API为社交网络自动创建一些缓冲区,并让它们在自动时间发布。使用API​​ URL向Web服务发送图像

我需要使用他们的API,特别是this method,通过图像和文本发送我的帖子。我已经算出了几乎所有的东西,但我想不出用这个API发送图像的正确方法。

我google了一下,但我似乎无法找到办法做到这一点。我看到的所有示例都是通过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. 
}]; 

回答

0

我设法去适应这个存在的问题:

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]; 
相关问题