-1

JSONを解析しようとしています。簡単にするために、github: のデフォルトの例を使用して説明しません。

NSURL *url = [NSURL URLWithString:@"http://httpbin.org/ip"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];

AFJSONRequestOperation *operation = [AFJSONRequestOperation
JSONRequestOperationWithRequest:request success:^(
    NSURLRequest *request, NSHTTPURLResponse     *response, id JSON) {
    NSLog(@"IP Address: %@", [JSON valueForKeyPath:@"origin"]);
    } failure:nil];

[operation start];

正しい出力がログに記録されます。ただし、例のコンテンツ (基本的には 1 つの要素) を txt または html ファイルにコピーすると (URLWithString は @"http:// my server address /file.txt" を取得します)、それをテスト サーバーに配置して、そこから賞賛してください、私は出力を得ません。これの何が問題なのですか?御時間ありがとうございます!

(注: http:// my server address /file.txt にアクセスすると、そこにある内容がはっきりと見えるので問題ありません)

編集: 示唆されているように、内容は次のとおりです: "{ "origin": "10.44.119.100" }"

4

2 に答える 2

1

あなたの問題はおそらく、コンテンツをJSON ( /拡張子).txtではなくテキスト ファイル ( )として提供しているという事実に関係しています。AFNetworking は、予期しない動作を防ぐために、HTTP 標準に厳密に準拠しています。サーバーに正しいヘッダーを設定するか、(ハックとして) を追加します。Content-Type: application.json.jsonContent-TypeAFJSONRequestOperation +addAcceptableContentTypes:text/plain

メタノートとして: Stack Overflow で質問するときは、詳細が重要です。コンソールに表示されたエラーを投稿しておけば、問題の原因を特定するのがはるかに簡単になります。同様に、近似コードは実際のコードではありません。問題がある場合は、何が起こっているのかを具体的に説明してください。詳細が重要です。

于 2013-02-25T18:32:49.163 に答える
-1

最初にjsonデータをエンコードしてからテキストファイルに書き込み、ファイルからデータを読み取るときに...最初にデータをデコードする必要があります...

編集: JSON 操作を単純な http に置き換え、そこからデータを取得できるかどうかを確認します...そしてそうであれば、JSONOperation は基本的にテキストファイルにない json 応答を求めています...私は推測します

AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc]initWithRequest:request];

[operation setUploadProgressBlock:^(NSInteger bytesWritten,long long totalBytesWritten,long long totalBytesExpectedToWrite)
 {

     NSLog(@"Sent %lld of %lld bytes", totalBytesWritten, totalBytesExpectedToWrite);

 }];

[operation  setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject)
{


    NSString *str = [[NSString alloc]initWithData:responseObject encoding:NSUTF8StringEncoding];
    NSLog(@" Success %@",str);
   // id response = AFJSONDecode(responseObject, nil);

    [self requestSucceed:response];
}
                                  failure:^(AFHTTPRequestOperation *operation, NSError *error)
{
    NSLog(@"error: %@",  operation.responseString);
}];
于 2013-02-25T13:51:05.567 に答える