Ios xcode NSURLConnection post返回200但NSData始终为空?
===================================================================================================Ios xcode NSURLConnection post返回200但NSData始终为空?,ios,xcode,post,Ios,Xcode,Post,=================================================================================================== NSString *post = @"maxor=123&minor=123"; NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES]; NSMutableURL
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];
始终显示以下日志:
州——200
数据-空
在chrome/IE/Firefox上获取响应数据很容易
但是在iphone中使用xcode总是返回state=200和data=null QAQ
谁能告诉我如何解决此问题…Plz T_T状态代码200表示您现在已与服务器建立了活动且成功的连接。但这并不意味着您将成功获取数据。需要注意以下几点: 您的请求应与服务器上所需的内容类型匹配。如果不匹配,您将不会收到数据或无效数据 确保调用了GET或POST的方法 某些web服务还需要特定的用户代理,所以如果需要,还需要检查用户代理 参数值:即使您获得了成功代码-服务器在某段时间内所需的数据类型值也会误导您。最常见的可能的数据类型不匹配是bool、int和float。必须检查您是否传递了准确的数据类型值。例如,1被认为是int,也作为布尔值。< /P> 编码方案:必须按照服务器规范使用完全相同的编码方案解析接收数据 编辑: 在您的情况下,您只需要更改编码:NSASCIIStringEncoding 用代码替换上述方法。-connection:didReceiveData:在下载过程中可能会被多次调用 您应该持有NSMutableData的一个实例,该实例由您在连接中发起:didReceiveResponse 然后在连接完成时追加数据并分配字符串:
-(void) connection:(NSURLConnection *)connection didReceiveData: (NSData *) incomingData
{
NSLog(@"data---%@",[[NSString alloc] initWithData: incomingData encoding:NSASCIIStringEncoding]);
}
我建议您使用类似的方法,但如果您真的想自己实现它,可以查看源代码。您是否尝试过更改内容类型?如果你有json数据,你应该在Content-Type中设置@application/json。当前的响应只是一个短字符串-->| | | | | | | | | | 123 | | | | | |,但iphone总是得到空值;这是服务器代码-->Test | | | | | | | | | | 123 | | | | |这里的内容类型是text/html。因此,请将application/x-www-form-urlencoded替换为text/html,然后进行检查。您说得对,谢谢您@@鍾豐吉 - 我能解决你的问题。检查编辑的答案。
-(void) connection:(NSURLConnection *)connection didReceiveData: (NSData *) incomingData
{
NSLog(@"data---%@",[[NSString alloc] initWithData: incomingData encoding:NSASCIIStringEncoding]);
}
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
self.receivedData = [NSMutableData data];
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
[[self receivedData] appendData:data];
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
NSLog(@"data---%@", [[NSString alloc] initWithData:[self receivedData] encoding:NSURF8StringEncoding]);
self.receivedData = nil;
}