2

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  
4

2 に答える 2

1

取得している応答には 2 つの問題があるようです。期待するコンテンツが含まれていないことと、その形式が正しくないことです。応答の HTTP 本文に HTML と JSON の両方が含まれているようです。

最初の問題は、ある種のアプリケーション レベルの問題です。正しいクエリを送信していないか、サーバーが正しく解釈していないか、何らかのバグがあるかのいずれかです。したがって、どちらの側にもある可能性があります。

ただし、2 つ目の問題はおそらくサーバー側の問題です。首尾一貫した応答を返しません。そうは言っても、JSON 応答が必要であることを明示的に伝えることで、サーバーに正しいことをさせることができるかもしれません。

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

サーバーにもよるけど。幸運を!

于 2013-07-30T16:05:59.727 に答える
0

エラーのように、デバッガーで json エラーが発生していGarbage At Endますか? NSJSONSerialization を使用して iOS 側で JSON を処理していますか? NSJSONReadingAllowFragmentsNSJSONSerializationのオプションを使用するとどうなりますか?

これをコメントとして投稿したかったのですが、私は恵まれていません。:(

于 2013-07-30T16:14:16.113 に答える