App 使用很久了,昨天出现一个bug,网络请求总失败。调试打印,发现是这样的错误:
AFHTTPRequestOperation *operation = [manager POST:URLString parameters:param success:^(AFHTTPRequestOperation *operation, id responseObject) {
if (successBlock) {
successBlock(responseObject);
}
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
if (failureBlock) {
failureBlock(error);
}
NSLog(@"%@", error);
}];
Error Domain=NSCocoaErrorDomain Code=3840 "JSON text did not start with array or object and option to allow fragments not set." UserInfo={NSDebugDescription=JSON text did not start with array or object and option to allow fragments not set., NSUnderlyingError=0x15eb52e0 {Error Domain=com.alamofire.error.serialization.response Code=-1011 "Request failed: bad gateway (502)" UserInfo={com.alamofire.serialization.response.error.response=<NSHTTPURLResponse: 0x15d4c7d0> { URL: http://xxx.com } { status code: 502, headers { Connection = "keep-alive"; "Content-Length" = 173; "Content-Type" = "text/html"; Date = "Mon, 01 Feb 2016 03:35:51 GMT"; Server = "nginx/1.5.12"; } }, NSErrorFailingURLKey=http://xxx.com, NSLocalizedDescription=Request failed: bad gateway (502)
有大神遇到过吗?App 使用很久了,头一次出现这样的 bug, 因此可以排除 manager 的配置问题。
서버에서 반환된 데이터는 json 형식이 아닙니다. 백엔드에서 조정하도록 두는 것이 가장 일반적인 실수입니다.
이런 일이 발생하는 가장 일반적인 이유는 인터페이스가 인쇄 정보를 추가하거나 인터페이스에서 오류가 발생하여 요청에 의해 반환된 데이터가 합법적인 JSON이 아니며 오류가 보고되는 것입니다.
1층의 정답은 이 문제가 이전에도 항상 발생했다는 것입니다. 즉, 인터페이스에서 반환된 데이터가 표준 json 형식이 아니며 줄 바꿈이나 기타 기호로 인해 발생할 수 있습니다.
@Aster0id, @biaoge, @Na爱利懇, 정말 서버의 잘못입니다. 감사해요.