AFNetwork2.0在報錯1016,3840的解決方法及一些感悟

最近在學習AFNetwork,很是好的網絡框架,能節省不少時間。不過請求網絡數據時報錯1016,3840.html

這兩個錯誤網上解決方法不少,http://blog.csdn.net/huifeidexin_1/article/details/38844535,這篇博客的解決方法很是好。也確實起了效果,不過接下來問題來了。ios

 

好比我要實現最容易的登陸功能,用http協議,我把帳號密碼傳給服務器,若是驗證成功,它傳個1給我就好了。web

+(BOOL)getLoginByUser:(NSString *)username andPass:(NSString *)password
{
    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];

    manager.requestSerializer = [AFHTTPRequestSerializer serializer];
    manager.responseSerializer = [AFHTTPResponseSerializer serializer];
    
     NSDictionary *dict = @{@"nickName":username,@"password":password};
    [manager GET:url parameters:dict success:^(AFHTTPRequestOperation *operation, id responseObject) {
        NSData *doubi = responseObject;
        NSString *shabi =  [[NSString alloc]initWithData:doubi encoding:NSUTF8StringEncoding];
        NSLog(@"%@",shabi);    
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        NSLog(@"Error: %@", error);
    }];
    
    return YES;
}

由於加了"text/html",因此傳過來的是一個html頁面,1在body裏。即...<body>1</body>...算法

可是我只要1就好了,若是本身在寫算法把1提取出來就太詭異了,並不可行。json

 

後來才發現是我一開始就理解有問題。上面的方法處理的就是服務器傳"text/html"的解決方法。用於爬蟲或者web直接顯示頁面等狀況。服務器

而我要的就是json數據網絡

{"result": "1"}框架

這也正符合了AFNetwork默認支持的類型,其實ios開發不怎麼用到"text/html"類型。大部分狀況下是json,因此這也是AFNetwork默認支持的。ide

這又回到了剛開始的時候,報了1016錯誤。學習

其實錯誤是服務器的緣由,服務器要指定格式,http response的content-type。它要設置爲json,那麼就不會報1016錯誤了。

+(BOOL)getLoginByUser:(NSString *)username andPass:(NSString *)password
{
    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
    
     NSDictionary *dict = @{@"nickName":username,@"password":password};
    [manager GET:url parameters:dict success:^(AFHTTPRequestOperation *operation, id responseObject) {
        NSString *responseValue = [responseObject objectForKey:@"result"];
        NSLog(@"%@",responseValue);
        
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        NSLog(@"Error: %@", error);
    }];
    
    return YES;
}

 這個輸出結果就是1。

因此遇到了錯誤仍是要多想一想,即然本身要的就是json數據,幹嗎還要add"text/html",應該要想到實際上是服務端的問題。

相關文章
相關標籤/搜索