2016-03-11 3 views
0

У меня проблема. Я делаю запрос POST на сервер. В котором я загружаю изображение с user_id пользователя. Мне нужно отправить user_id в x-www-form-urlencoded и Image in from-data. Я пробовал много способов, но каждый раз, когда user_id не определен на сервере. Как я могу отправить оба запроса. Вот мой КОД:Как отправить данные формы и x-www-form-urlencoded как в том же запросе POST в ios?

NSString *urlString = [[NSString alloc]initWithString:[NSString stringWithFormat:@"MY URL TO UPLOAD IMAGE "]]; 
urlString=[urlString stringByAddingPercentEscapesUsingEncoding: 
      NSUTF8StringEncoding]; 
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init]; 
[request setURL:[NSURL URLWithString:urlString]]; 
[request setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData]; 
[request setHTTPShouldHandleCookies:NO]; 
[request setTimeoutInterval:100]; 

[request setHTTPMethod:@"POST"]; 



NSString *boundary = @"------V2ymHFg03ehbqgZCaKO6jy"; 


NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary]; 
[request setValue:contentType forHTTPHeaderField: @"Content-Type"]; 

[request addValue:@"application/x-www-form-urlencoded; charset=utf-8" forHTTPHeaderField:@"Content-Type"]; 

NSDictionary *params = @{@"user_id":@"213"}; 
NSMutableData *body = [NSMutableData data]; 

for (NSString *param in params) { 
    [body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
    [body appendData:[[NSString stringWithFormat:@"Content-Disposition: x-www-form-urlencoded; name=\"%@\"\r\n\r\n", param] dataUsingEncoding:NSUTF8StringEncoding]]; 
    [body appendData:[[NSString stringWithFormat:@"%@\r\n", [params objectForKey:param]] dataUsingEncoding:NSUTF8StringEncoding]]; 

} 


// add image data 
NSData *imageData = UIImageJPEGRepresentation(image, .3); 
if (imageData) { 
    [body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 

    [body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"my-file\"; filename=\"%@.jpg\"\r\n",@"213"] dataUsingEncoding:NSUTF8StringEncoding]]; 

    [body appendData:[@"Content-Type: image/jpg\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]]; 
    [body appendData:imageData]; 
    [body appendData:[[NSString stringWithFormat:@"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; 
} 



[body appendData:[[NSString stringWithFormat:@"--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 

// setting the body of the post to the reqeust 
[request setHTTPBody:body]; 

NSURLResponse *urlResponse; 

NSError *error; 

NSData * data=[NSURLConnection sendSynchronousRequest:request returningResponse:&urlResponse error:&error]; 

Выход: данных = ноль

ответ

0

Для того, чтобы отправить данные через POST

[request setHTTPMethod:@"POST"]; 
NSString *myString = [NSString stringWithFormat:@"value1=test3&value2=test"]; 
[request setHTTPBody:[myString dataUsingEncoding:NSUTF8StringEncoding]]; 
+0

Я использую POST –