从服务器获取JSON文件时内容丢失

时间:2013-07-30 15:48:34

标签: ios json

我有一个API,我想使用POST请求从它获取一些数据作为JSON文件。

问题是:

服务器上的数据如下所示:

{
  "countryID":"30"
  "countryName":"Syria" 
},
我从http请求中收到的数据 - 解析前是:

{
  "countryID":"30"
  "countryName":"" 
},

每个文本字段都没有值,例如countryName。

http请求是:

‫NSString * post =[NSString stringWithFormat:@"lang=%@",@"English"];

NSData *postData = [post dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];
NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];

NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setTimeoutInterval:60];

[request setURL:url];
[request setHTTPMethod:@"POST"];

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

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

我想提到的最后一件事是收到的JSON文件在JSON数据之前包含一个标题,如下所示:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

我的问题

HTTP请求中是否有任何错误导致此问题?或者它是服务器端问题?

修改

我忘了提到服务器是PHP服务器,请求的url格式如下所示:

 https://website.com/api/data.php  

2 个答案:

答案 0 :(得分:1)

看起来你得到的响应有两个问题:它没有你期望的内容,而且它的格式是关闭的 - 听起来响应的HTTP主体同时包含HTML和JSON。 / p>

第一个问题是某种应用程序级问题;要么您没有发送正确的查询,要么服务器没有正确解释它,或者它有其他一些错误。所以它可以在任何一方。

然而,第二个问题可能是服务器端问题;它没有回复连贯的回应。也就是说,您可以通过明确告诉您需要JSON响应来刺激服务器做正确的事情:

[request setValue:@"application/json" forHTTPHeaderField:@"Accept"];

取决于服务器。祝你好运!

答案 1 :(得分:0)

您是否在调试器中收到任何json错误,例如Garbage At End错误?您是否使用NSJSONSerialization来处理iOS端的JSON?如果使用NSJSONSerialization的NSJSONReadingAllowFragments选项会发生什么?

我已发布此评论作为评论,但我是弱势群体。 :(