2

AFNetworkingに基づくこのJSON-RPCクライアントを使用しています

この呼び出しを行った後:

    AFJSONRPCClient *client = [[AFJSONRPCClient alloc] initWithURL:[NSURL URLWithString:kAPIHost]];


[client invokeMethod:@"auth.login"
      withParameters:params
                 success:^(AFHTTPRequestOperation *operation, id responseObject) {

                     //success handling
                     completionBlock(responseObject);

} failure:^(AFHTTPRequestOperation *operation, NSError *error) {

    //error handling
    NSLog(@"error: %@", [error description]);
}];

エラーの NSLog でこれを取得しています。

エラー: エラー ドメイン=AFNetworkingErrorDomain コード=-1016 "予期されるコンテンツ タイプ {( "text/json", "application/json", "text/javascript" )}, got application/json-rpc" UserInfo=0xd02f680 {NSLocalizedRecoverySuggestion={ "エラー": null、"jsonrpc": "2.0"、"id": "1"、"結果": {"キー": "38c491c894aa057d532e8b314d"、"成功": true}}、AFNetworkingOperationFailingURLResponseErrorKey =、NSErrorFailingURLKey = someurl、 NSLocalizedDescription=予期されるコンテンツ タイプ {( "text/json", "application/json", "text/javascript" )}、取得された application/json-rpc、AFNetworkingOperationFailingURLRequestErrorKey=http://rpc.development.hotelzilla.net/>}

私が理解していないのは、応答がすべて正しいデータで表示される理由です (太字で強調表示されています)。

これまでのところ、これは私が試したことです:

        [AFJSONRequestOperation addAcceptableContentTypes:[NSSet setWithObject:@"application/json-rpc"]];

    // Accept HTTP Header; see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.1
    [self setDefaultHeader:@"Accept" value:@"application/json-rpc"];

    [self registerHTTPOperationClass:[AFJSONRequestOperation class]];

何か案は?

4

1 に答える 1

4

のサブクラスではないこのクライアントを使用しているため、このメソッドに応答しないため、この問題が発生している場合、最初に試みた解決策は[AFJSONRequestOperation addAcceptableContentTypes:[NSSet setWithObject:@"application/json-rpc"]];おそらくうまくいったでしょう。AFJSONRequestionOperationAFHTTPRequestOperation

使用しているクライアントのコードを変更する場合、これは実行可能なソリューションになる可能性があります。AFJSONRequestOperationというソースコードoperationが作成されていますが、この辺りで使おうとすると[AFJSONRequestOperation addAcceptableContentTypes:[NSSet setWithObject:@"application/json-rpc"]];直るかもしれません。

于 2012-11-12T20:23:49.913 に答える