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”)},得到了 application/json-rpc”UserInfo=0xd02f680 {NSLocalizedRecoverySuggestion={ “错误”:空,“jsonrpc”:“2.0”,“id”:“1”,“结果”:{“key”:“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"]];可能会奏效,AFJSONRequestionOperation但由于您使用的是不是子类的客户端,AFHTTPRequestOperation因此它不会响应此方法。

如果您更改正在使用的客户端的代码,这可能是一个可行的解决方案。在源代码中创建了一个AFJSONRequestOperation被调用operation的对象,如果您尝试[AFJSONRequestOperation addAcceptableContentTypes:[NSSet setWithObject:@"application/json-rpc"]];在这里附近的某个地方使用,您可能能够解决该问题。

于 2012-11-12T20:23:49.913 回答