RestKit - 预期的内容类型 application/json
RestKit - Expected Content Type application/json
我在使用 RestKit 时遇到了最奇怪的错误。这是错误的本地化描述 -
Expected content type {(
"application/json",
"text/html",
"text/plain",
"application/x-www-form-urlencoded"
)}, got {application/json}
如您所见,我期望 "application/json" 作为内容类型,而服务器正在返回 application/json。我不知道为什么会收到此错误!
详细错误在这里 --
2015-02-19 11:24:43.234 MyProject[62944:10754151] E restkit.network:RKObjectRequestOperation.m:213 POST 'https://ipaddress/api/v1.0/user/verify' (200 OK / 0 objects) [request=0.1408s mapping=0.0000s total=0.1428s]: Error Domain=org.restkit.RestKit.ErrorDomain Code=-1016 "Expected content type {(
"application/json",
"text/html",
"text/plain",
"application/x-www-form-urlencoded"
)}, got {application/json" UserInfo=0x7f9c49db4930 {NSLocalizedRecoverySuggestion={"user_id":"3749f17f647c4ee1a9ee9d75c5f49f7e","domain":"domain","device_id":"2751029764","access_token":"589134b447974320b2d494a491e8226a","access_token_expiration":2181237828314,"refresh_token":"cb06c038be7b4f7c930de1fcb3f2017a"}, NSErrorFailingURLKey=https://ipaddress/api/v1.0/user/verify, AFNetworkingOperationFailingURLRequestErrorKey=<NSMutableURLRequest: 0x7f9c49def0c0> { URL: https://ipaddress/api/v1.0/user/verify }, AFNetworkingOperationFailingURLResponseErrorKey=<NSHTTPURLResponse: 0x7f9c49f567a0> { URL: https://ipaddress/api/v1.0/user/verify } { status code: 200, headers {
"Baseline-Request-Id" = 30f91b50;
Connection = "keep-alive";
"Content-Length" = 230;
"Content-Type" = "{application/json, q=1000}";
Date = "Thu, 19 Feb 2015 19:23:48 GMT";
Server = "nginx/1.6.2";
} }, NSLocalizedDescription=Expected content type {(
"application/json",
"text/html",
"text/plain",
"application/x-www-form-urlencoded"
)}, got {application/json}
更新--
经过一些调试,我发现问题出在我在响应中得到的 "Content-Type" 的值上。正如您在上面的示例中看到的,该值为“{application/json, q=1000}
”而不是“application/json
”。出于某种原因,RestKit 将其读取为“{application/json
”(省略逗号后的内容,并注意起始大括号),因此找不到与预期类型的匹配项。
为了 "solve" 它以一种肮脏的方式,我添加了以下行(注意 "application/json" 之前的“{”)
[RKMIMETypeSerialization registerClass:[RKNSJSONSerialization class] forMIMEType:@"{application/json"];
但我们都知道这不是正确的方法。我不知道这里出了什么问题,服务器发送的内容不正确吗?或者 RestKit 应该以不同的方式解读它?
我找不到服务器返回 "Wrong" 内容类型的原因。服务器的开发人员否认它做错了什么。所以我最终使用了我的肮脏技巧并在 "application/json".
之前添加了一个“{”
[RKMIMETypeSerialization registerClass:[RKNSJSONSerialization class] forMIMEType:@"{application/json"];
我在使用 RestKit 时遇到了最奇怪的错误。这是错误的本地化描述 -
Expected content type {(
"application/json",
"text/html",
"text/plain",
"application/x-www-form-urlencoded"
)}, got {application/json}
如您所见,我期望 "application/json" 作为内容类型,而服务器正在返回 application/json。我不知道为什么会收到此错误!
详细错误在这里 --
2015-02-19 11:24:43.234 MyProject[62944:10754151] E restkit.network:RKObjectRequestOperation.m:213 POST 'https://ipaddress/api/v1.0/user/verify' (200 OK / 0 objects) [request=0.1408s mapping=0.0000s total=0.1428s]: Error Domain=org.restkit.RestKit.ErrorDomain Code=-1016 "Expected content type {(
"application/json",
"text/html",
"text/plain",
"application/x-www-form-urlencoded"
)}, got {application/json" UserInfo=0x7f9c49db4930 {NSLocalizedRecoverySuggestion={"user_id":"3749f17f647c4ee1a9ee9d75c5f49f7e","domain":"domain","device_id":"2751029764","access_token":"589134b447974320b2d494a491e8226a","access_token_expiration":2181237828314,"refresh_token":"cb06c038be7b4f7c930de1fcb3f2017a"}, NSErrorFailingURLKey=https://ipaddress/api/v1.0/user/verify, AFNetworkingOperationFailingURLRequestErrorKey=<NSMutableURLRequest: 0x7f9c49def0c0> { URL: https://ipaddress/api/v1.0/user/verify }, AFNetworkingOperationFailingURLResponseErrorKey=<NSHTTPURLResponse: 0x7f9c49f567a0> { URL: https://ipaddress/api/v1.0/user/verify } { status code: 200, headers {
"Baseline-Request-Id" = 30f91b50;
Connection = "keep-alive";
"Content-Length" = 230;
"Content-Type" = "{application/json, q=1000}";
Date = "Thu, 19 Feb 2015 19:23:48 GMT";
Server = "nginx/1.6.2";
} }, NSLocalizedDescription=Expected content type {(
"application/json",
"text/html",
"text/plain",
"application/x-www-form-urlencoded"
)}, got {application/json}
更新--
经过一些调试,我发现问题出在我在响应中得到的 "Content-Type" 的值上。正如您在上面的示例中看到的,该值为“{application/json, q=1000}
”而不是“application/json
”。出于某种原因,RestKit 将其读取为“{application/json
”(省略逗号后的内容,并注意起始大括号),因此找不到与预期类型的匹配项。
为了 "solve" 它以一种肮脏的方式,我添加了以下行(注意 "application/json" 之前的“{”)
[RKMIMETypeSerialization registerClass:[RKNSJSONSerialization class] forMIMEType:@"{application/json"];
但我们都知道这不是正确的方法。我不知道这里出了什么问题,服务器发送的内容不正确吗?或者 RestKit 应该以不同的方式解读它?
我找不到服务器返回 "Wrong" 内容类型的原因。服务器的开发人员否认它做错了什么。所以我最终使用了我的肮脏技巧并在 "application/json".
之前添加了一个“{”[RKMIMETypeSerialization registerClass:[RKNSJSONSerialization class] forMIMEType:@"{application/json"];