这是我的代码,它使用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);
}
}];
它在控制台中显示array =(null)。
答案 0 :(得分:1)
我只是尝试使用您的代码,并且成功没有任何问题。
因此,您的问题出在您发送请求的服务器中,或者在NSURLConnection委托方法中,这些方法未正确实现。
您还应发布发送代码(NSURLConnection用法)。
答案 1 :(得分:1)
您的多部分邮件正文未正确设置。
在最后一部分(你只有一部分)之后,需要一个“close-boundary-delimiter”。因此,在为请求设置正文之前,需要附加分隔符:
[body appendData:[[NSString stringWithFormat:@"\r\n--%@--", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
严格来说,没有必要用CRLF(“\ r \ n”)关闭“close-boundary-delimiter”。
不需要在CRLF(您没有)之前添加实际正文值( allIOSContactsEmailAddresses )。该CRLF将被视为正文内容。实际上,这可能会使消费者感到困惑。
相反,对于文本正文,有时需要关闭 CRLF (取决于服务器)。
注意添加标题时,必须使用CRLF关闭它(就像您一样)。为了关闭标题区域,需要关闭CRLF。对此,您的信息是正确的。