【问题标题】:How to send form-data and x-www-form-urlencoded both in same POST request in ios?如何在 ios 的同一个 POST 请求中发送 form-data 和 x-www-form-urlencoded?
【发布时间】:2016-03-11 11:55:42
【问题描述】:

我有问题。我正在向服务器发出 POST 请求。在其中我正在上传一个带有 User_id 的图像。我需要在 x-www-form-urlencoded 中发送 user_id,在 from-data 中发送图像。我尝试了很多方法,但每次 user_id 在服务器中未定义。我怎样才能在同一个请求中发送两者。 这是我的代码:

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

输出: data = nil

【问题讨论】:

    标签: ios nsurlconnection urlencode form-data


    【解决方案1】:

    为了通过POST发送您的数据

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-05
      • 1970-01-01
      • 2018-07-21
      • 2021-01-19
      • 2014-03-30
      • 1970-01-01
      • 2021-09-24
      • 1970-01-01
      相关资源
      最近更新 更多