1.在postman中測試以及安卓那邊請求服務(wù)器完全ok,iOS就輸出以下錯誤:
Error Domain=NSCocoaErrorDomain Code=3840 "Garbage at end." UserInfo={NSDebugDescription=Garbage at end.}
解決方法:讓服務(wù)器開發(fā)人員多返回了不該返回的數(shù)據(jù),將這些文件刪除就可以正常訪問了。
2.控制臺打?。?/p>
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.}
第一種原因:查看你的Url是否填寫正確
第二種原因:AFN網(wǎng)絡(luò)請求返回的是json數(shù)據(jù),出現(xiàn)這個類型的錯誤,說明返回的是非json格式,在你封裝的網(wǎng)絡(luò)請求基類中查看是否,添加以下代碼:
//設(shè)置返回數(shù)據(jù)格式為JSON
manager.responseSerializer=[AFHTTPResponseSerializer serializer];
但是注意:如果設(shè)置了該屬性,直接打印服務(wù)器返回的responseobjct是data格式,需要格式化一下,才能更清晰的看到服務(wù)器響應(yīng)的數(shù)據(jù)結(jié)構(gòu)
[[self shareManager] POST:url parameters:params success:^(AFHTTPRequestOperation * operation, id responseObject) {
NSLog(@"服務(wù)器response success=====%@", [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding]);
} failure:^(AFHTTPRequestOperation * operation, NSError * error) {
NSLog(@"服務(wù)器response error==%@",error);
}];
3.使用AFN post提交json格式數(shù)據(jù)
正常情況下,我們只要傳輸一個字典模式的數(shù)據(jù)給后臺就可以,但是如果提交一個表單數(shù)據(jù),數(shù)據(jù)格式比較復(fù)雜,包含數(shù)組,我們還是傳輸一個字典的格式,后臺無法解析我們傳輸?shù)臄?shù)組數(shù)據(jù),但是將字典轉(zhuǎn)json數(shù)據(jù),也是不行的,需要將AFN的請求格式設(shè)置為json:
+ (AFHTTPRequestOperationManager *)shareManager{
@synchronized(self){
if (_manager == nil ) {
_manager = [[AFHTTPRequestOperationManager alloc] initWithBaseURL:[NSURL URLWithString:TLPServerAddress]];
_manager.responseSerializer = [AFHTTPResponseSerializer serializer];
_manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/html",@"image/jpeg",@"image/jpg",@"image/png",@"application/octet-stream",@"text/json",@"application/json",@"text/javascript",nil];
_manager.requestSerializer=[AFJSONRequestSerializer serializer];
}
}
return _manager;
}
數(shù)組或者字典轉(zhuǎn)json字符串的方法
+ (NSString *)toJSONData:(id)theData
{
NSData *data = [NSJSONSerialization dataWithJSONObject:theData
options:NSJSONReadingMutableLeaves | NSJSONReadingAllowFragments|NSJSONWritingPrettyPrinted
error:nil];
if (data == nil) {
return nil;
}
NSString *string = [[NSString alloc] initWithData:data
encoding:NSUTF8StringEncoding];
return string;
}