2014-03-06 1 views
0

Я пытаюсь использовать Bufferapp API для автоматического создания некоторых буферов для социальных сетей и их публикации в автоматическом режиме.Отправка изображения в веб-службу с использованием их URL-адреса API

Мне нужно использовать их API, в частности this method, чтобы отправлять мои сообщения с изображением и текстом. Я понял почти все, но я не могу придумать правильный способ отправки изображений с помощью этого API.

У меня есть googled немного, но я не могу найти способ сделать это. Все примеры, которые я видел, делают это, отправляя все изображение поверх POST, но они, похоже, не используют формат API.

Другими словами, как я мог достичь чего-то подобного?

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

EDIT: Я не прилагается исходный код, потому что я понятия не имею, как решать «преобразование» в NSImage к чему-то, что может быть использовано и посланного через используя URL API, но здесь код, который я пытаюсь создать:

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];