報錯:
Error Domain=NSCocoaErrorDomain Code=3840 "The operation couldn’t be completed. (Cocoa error 3840.)" (Unescaped control character around character 2884.) UserInfo=0x79fa60b0 {NSDebugDescription=Unescaped control character around character 2884.}
原因在于出現特殊字元是AFNetworking無法解析的,會直接報錯,那麼當你在發post請求時,傳回結果會直接進如fail代碼塊,其實在fail中用operation的nsstring可以直接輸出接收到的資料,是string形,可以清楚的看到伺服器端資料有哪些含有特殊字元,但是有一些字元是不好看到的,比如“TAB”(制表)鍵打出的那種四個空格,項目中使用者有時候很常用到tab鍵,最好的方法是在AFNetworking源碼中添加字元過濾功能
處理辦法:找到AFNetworking包中AFURLResponseSerialization.m檔案,大概在第256行的 if (responseString && ![responseStringisEqualToString:@" "])(此時已将data轉化為responseString形)條件下面添加如下過濾方法:
NSCharacterSet *controlChars = [NSCharacterSet controlCharacterSet];
NSRange range = [responseString rangeOfCharacterFromSet:controlChars];
if (range.location != NSNotFound)
{
NSMutableString *mutable = [NSMutableString stringWithString:responseString];
while (range.location != NSNotFound)
{
[mutable deleteCharactersInRange:range];
range = [mutable rangeOfCharacterFromSet:controlChars];
}
responseString = mutable;
}
OK,再試一下,應該不會在報錯了。