我有一个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
答案 0 :(得分:1)
看起来你得到的响应有两个问题:它没有你期望的内容,而且它的格式是关闭的 - 听起来响应的HTTP主体同时包含HTML和JSON。 / p>
第一个问题是某种应用程序级问题;要么您没有发送正确的查询,要么服务器没有正确解释它,或者它有其他一些错误。所以它可以在任何一方。
然而,第二个问题可能是服务器端问题;它没有回复连贯的回应。也就是说,您可以通过明确告诉您需要JSON响应来刺激服务器做正确的事情:
[request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
取决于服务器。祝你好运!
答案 1 :(得分:0)
您是否在调试器中收到任何json错误,例如Garbage At End
错误?您是否使用NSJSONSerialization来处理iOS端的JSON?如果使用NSJSONSerialization的NSJSONReadingAllowFragments
选项会发生什么?
我已发布此评论作为评论,但我是弱势群体。 :(