iOS開發(fā)關(guān)于使用AFN遇到的問題總結(jié)

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;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 32,275評論 2 89
  • 1、通過CocoaPods安裝項目名稱項目信息 AFNetworking網(wǎng)絡(luò)請求組件 FMDB本地數(shù)據(jù)庫組件 SD...
    陽明AI閱讀 16,172評論 3 119
  • 我 們 去 打 藍(lán) 球 Go,Go,Go, 我們?nèi)ゴ蚧@球。 十人咱打全場, 倆人咱玩斗牛。 先別管作業(yè), 盡情把汗...
    四季聞蟬閱讀 222評論 0 3
  • 90后小伙相親被女方花式拒絕!女方說就因為他穿了這雙鞋? 一小伙和相親對象見面 晚上回到家后 姑娘在微信上拒絕了他...
    學(xué)生神來啦閱讀 255評論 0 0
  • Servlet Context 1. ServletContext接口介紹 ServletContext接口定義了...
    0x70e8閱讀 267評論 0 0

友情鏈接更多精彩內(nèi)容