0

リクエストが適切にフォーマットされていることはわかっていますが、Webサービスから取得する応答はNSDictionaryではありません。

  1. なぜそれはNSDictionaryではないのでしょうか?
  2. 「responseObject」がどのようなオブジェクトかはどうすればわかりますか?

    AFHTTPRequestOperation *operation = [[AFParseAPIClient sharedClient]  HTTPRequestOperationWithRequest:request success:^(AFHTTPRequestOperation *operation, id responseObject) {
        if ([responseObject isKindOfClass:[NSDictionary class]]) {
            NSLog(@"Response for %@: %@", className, responseObject);
            [self writeJSONResponse:responseObject toDiskForClassWithName:className];
        }else{
            //NSLog(@"Response NOT NSDictionary: %@", [responseObject class]);
            NSString *str = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
            NSLog(@"str: %@", str);
        }
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        NSLog(@"Request for class %@ failed with error: %@", className, error);
    }];
    

これが私が得るものです:

//Response NOT NSDictionary: <7b227265 73756c74 73223a5b 7b22636f ...>

編集:これが私が返すものです:

str: {"results":[{"desc":"My description.","device_iPad":true,"device_iPhone":true,"createdAt":"2012-09-05T18:36:11.431Z","updatedAt":"2012-09-05T22:00:52.199Z"}]}
4

4 に答える 4

4

操作を作成した後、このコード行を追加するだけです

operation.responseSerializer=[AFJSONResponseSerializerシリアライザー];

于 2015-04-16T15:25:41.890 に答える
2

同じ問題が発生しましたが、AFHTTPClientのサブクラスでリクエストを実行しました。__NSCFDictionaryの代わりに__NSCFDataを取得していました。私はこれでそれを解決しました:

[self setDefaultHeader:@"Accept" value:@"application/json"];

selfは私のAFHTTPClientサブクラスです。

于 2013-08-24T03:35:50.537 に答える
1

これはあなたに役立ちますか?AFNetworkinggithubプロジェクトからです

NSURL *url = [NSURL URLWithString:@"https://gowalla.com/users/mattt.json"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];

AFJSONRequestOperation *operation = [AFJSONRequestOperationJSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
NSLog(@"Name: %@ %@", [JSON valueForKeyPath:@"first_name"], [JSON valueForKeyPath:@"last_name"]);
} failure:nil];

[operation start];

試してみてください、それはかなり簡単です。*それでもアレイの場合は[[JSON objectAtIndex:0] objectForKey@"desc /*(or whatever)*/"]

于 2012-09-05T22:22:22.033 に答える
0

AFJSONRequestOperationを使用すると、AFNetworkingはJSON応答を返します。AFHTTPRequestOperationを使用すると、NSDataが返されます。これは、NSDictionaryに変換(キャスト)して、以下を使用して印刷できます。

NSLog(@ "Response:%@"、[[NSString alloc] initWithData:(NSData *)json encoding:NSUTF8StringEncoding]);

私のアドバイスは、AFJSONRequestOperationを使用することです。

于 2014-01-03T05:03:38.683 に答える