我正在使用基于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]];
有什么想法吗?
答案 0 :(得分:4)
如果您只是[AFJSONRequestOperation addAcceptableContentTypes:[NSSet setWithObject:@"application/json-rpc"]];
遇到此问题,那么AFJSONRequestionOperation
的首次尝试解决方案可能会有效,但因为您使用的是AFHTTPRequestOperation
的子类而不是AFJSONRequestOperation
的子类所以它没有回应这种方法。
如果您更改正在使用的客户端的代码,那么这可能是一个可行的解决方案。在源代码中,创建了一个名为operation
的{{1}},如果您尝试在此处某处使用[AFJSONRequestOperation addAcceptableContentTypes:[NSSet setWithObject:@"application/json-rpc"]];
,则可以解决此问题。