-1

AFNetworkingリクエストサーバーを使用していますが、次のような出力が得られます。

2012-12-25 15:16:47.578 SmsForNewYear[3825:c07] <3c21444f 43545950 45206874 6d6c2050 55424c49 4320222d 2f2f5733 432f2f44 54442058 48544d4c 20312e30 20547261 6e736974 696f6e61 6c2f2f45 4e222022 68747470 3a2f2f77 77772e77 332e6f72

追加すると、jsonではありません[self setDefaultHeader:@"Accept" value:@"application/json"];

戻り値:

SmsForNewYear[3920:c07] getNewSms:Expected content type {(
"text/json",
"application/json",
"text/javascript"
)}, got text/html

しかし、私はブラウザを使用しました、それはこのように見えます

{"rs_code":"200","data":{"sms_cate_list":[{"id":"26","name":"\u559c\u5e86","likes":"0","sms_num":"1","order_id":"1","is_index":"0","update_time":"1355932115"}

jsonです。

一方、私はasihttprequestjsonを返すことができます。

なぜ?

4

1 に答える 1

3

1 つ目NSLogは典型的なNSDataログ結果で、読みにくいものです。デバッグ目的で見たい場合は、次のことができます

NSLog(@"%@", [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]);

明らかに、そのオブジェクトjsonDataを保持している変数に置き換えます。NSData失敗を宣言する前に、それを調べることができます。

ログに記録された文字列をデコードするNSDataと、HTML ファイルの先頭のように見えるので、Web サーバーがエラーを報告しているに違いありません。その HTMLのバージョンを調べて、問題が何であるかを判断する必要があります ( のが時期尚早に結果を切り捨てているため、NSString診断するのに十分な情報が含まれていません)。NSLogNSData

問題の診断に関しては、上記によって生成されたメッセージを表示する必要がありますNSLog。おそらくAFNetworking、Web サービスのリクエストを行うコードも提示する必要があります。


通常、Web サーバーからデータをダウンロードするとNSLogNSDataその結果が次のようにわかりにくくなります。その後、非常に幸いなことに、次のように渡すことができますNSJSONSerialization

NSError *error = nil;
NSDictionary *jsonResult = [NSJSONSerialization JSONObjectWithData:jsonData
                                                           options:0
                                                             error:&error];
if (error != nil)
    NSLog(@"Error in JSON: %@", [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]);
于 2012-12-25T07:44:06.923 に答える