Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios xcode NSURLConnection post返回200但NSData始终为空?_Ios_Xcode_Post - Fatal编程技术网

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