AFNetworking JSON-RPC预期内容类型 - 错误域= AFNetworkingErrorDomain

时间:2012-11-12 18:45:38

标签: objective-c json afnetworking json-rpc

我正在使用基于AFNetworking的this JSON-RPC client

拨打电话后:

    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“预期内容类型{(       “文/ JSON”,       “应用程序/ JSON”,       “文/ JavaScript的”   得到application / json-rpc“UserInfo = 0xd02f680 {NSLocalizedRecoverySuggestion = {”error“:null,”jsonrpc“:”2.0“,”id“:”1“,”result“:{”key“ :“38c491c894aa057d532e8b314d”,“success”:true}} ,AFNetworkingOperationFailingURLResponseErrorKey =,NSErrorFailingURLKey = someurl,NSLocalizedDescription =预期内容类型{(       “文/ JSON”,       “应用程序/ JSON”,       “文/ 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]];

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

如果您只是[AFJSONRequestOperation addAcceptableContentTypes:[NSSet setWithObject:@"application/json-rpc"]];遇到此问题,那么AFJSONRequestionOperation的首次尝试解决方案可能会有效,但因为您使用的是AFHTTPRequestOperation的子类而不是AFJSONRequestOperation的子类所以它没有回应这种方法。

如果您更改正在使用的客户端的代码,那么这可能是一个可行的解决方案。在源代码中,创建了一个名为operation的{​​{1}},如果您尝试在此处某处使用[AFJSONRequestOperation addAcceptableContentTypes:[NSSet setWithObject:@"application/json-rpc"]];,则可以解决此问题。