2013-10-17 233 views
1

这是我的代码,它使用POST请求来检索数据,但我无法获得所需的结果。 url中没有问题,因为它在浏览器上显示JSON输出。发布请求无法正常工作,但在浏览器中正常工作?

NSString *urlString = @"my url string";      
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];   
[request setURL:[NSURL URLWithString:[urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]];  
[request setHTTPMethod:@"POST"]; 

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

NSMutableData *body = [NSMutableData data]; 
[body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"email_string\"\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; 
[body appendData:[[NSString stringWithFormat:@"%@\r\n",allIOSContactsEmailAddresses] dataUsingEncoding:NSUTF8StringEncoding]]; 
[request setHTTPBody:body]; 

[NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue alloc]init] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) { 
    if (data!=nil) 
    { 
     NSArray* array=[NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error]; 
     NSLog(@"array=%@",array); 
    }   
}]; 

它显示阵列=控制台(空)..

+0

检查URL中是否有空格或特殊字符 – SRI

+0

url中没有空格或特殊字符,我也在做字符串编码 – user2534255

+0

你有什么回应?你有错误吗?请同时发布发送请求的代码。 – HyBRiD

回答

1

您的多部分邮件正文未正确设置。

在最后一部分(你只有一个)后,需要有一个“近边界分隔符”。所以,你定身的请求之前,你需要附加的分隔符:

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

严格,没有必要用一个CRLF(“\ r \ n”关闭“关闭边界分隔符” )。

没有必要在CRLF(您没有)的前面加上实际的身体值(allIOSContactsEmailAddresses)。该CRLF将被视为正文内容。其实,这可能会混淆消费者。

相反,对于文字的身体,一个关闭 CRLF可以有时需要(取决于服务器)。

注意添加标题时,它必须用CRLF关闭(如你所做的那样)。为了关闭标题区域,需要关闭CRLF。对此,你的信息是正确的。

+0

谢谢..它为我工作.. – user2534255

1

我只是试图用你的代码,它成功没有任何问题。

因此,您的问题是在您发送请求的服务器中,或者在您的NSURLConnection委托方法中未正确实施。

您还应该发送发送代码(NSURLConnection用法)。

+0

我已更新我的问题.. – user2534255

相关问题