[ios]xcode NSURLConnection 后返回 200 NSData 但总是空吗?

标签: Xcode ios
发布时间: 2017/3/28 22:16:22
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.
NSString *post = @"maxor=123&minor=123";
NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];

NSMutableURLRequest *request = [ NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://xavier-beacon.appspot.com/result4.jsp"] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0]  ;
[request setHTTPMethod:@"POST"];

[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];

[request setValue:@"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11" forHTTPHeaderField:@"User-Agent"];


[request setValue:[NSString stringWithFormat:@"%d",[postData length]] forHTTPHeaderField:@"Content-Length"];
[request setHTTPBody:postData];


NSURLConnection *connect = [[NSURLConnection alloc] initWithRequest:request delegate:self];
[connect start];

===================================================================================================

- (void)connection: (NSURLConnection *)connection didReceiveResponse: (NSURLResponse *)aResponse
{   
    NSLog(@"state------%d", status);

}
-(void) connection:(NSURLConnection *)connection didReceiveData: (NSData *) incomingData
{    
    NSLog(@"data---%@",[[NSString alloc] initWithData: incomingData encoding:NSUTF8StringEncoding]);

}

下面的日志是总是: (状态---200) (数据---空)

它是易于使用的http://xavier-beacon.appspot.com/result4.jsp?maxor=123&minor=123以获得响应数据中铬的 IE/火狐上

但在 iphone 总是返回状态中使用 xcode = 200 和数据 = null QAQ...

谁能告诉我如何可以解决这个问题......请 T_T

解决方法 1:

状态代码 200 表明你有现在积极和成功与服务器的连接。但这并不意味着你将成功地获取数据。有一些要点需要被照顾︰

  1. 您的请求应符合 Content-Type 要求在服务器上。如果它不匹配您不会收到数据或无效数据

  2. 请确保你有调用哪个方法 GETPOST

  3. 某些 web 服务还需要具体 user-agent ,所以如果它也为用户代理需要检查

  4. 参数值︰ 即使你成功代码-到一些时间 mis 服务器所需的数据类型值导致你。最常见的可能数据类型 mis 比赛是 boolintfloat 。至关重要的是要检查你有确切的数据类型值传递。例如 1 被认为是 int 和也作为 bool 的值。

  5. 编码方案︰ 你必须要分析接收数据根据服务器规格完全相同的编码模式。

编辑︰

你的情况,你只需要改变 encoding:NSASCIIStringEncoding

-(void) connection:(NSURLConnection *)connection didReceiveData: (NSData *) incomingData
{
    NSLog(@"data---%@",[[NSString alloc] initWithData: incomingData encoding:NSASCIIStringEncoding]);

}

上述方法与您的代码替换。

官方微信
官方QQ群
31647020