使用AFN 的POST請求出現錯誤"Error Domain=NSCocoaErrorDomain Code=3840 "決絕方案
使用最新版本的AFN 進行HTTP的網路請求偶爾遇到的問題, 有時候自己就解決了, 也不知道原因, 後來 stackOverFlow上看到一個答案試了一下 可以解決 不過他的都是用C 寫的, 簡單改了一下 還是使用AFN
程式碼
/* 主要就是給 請求的過程新增一個安全政策的物件 並使用 */
+ (void)POSTWithURL:(NSString *)url withBody:(id)body withBodyStyle:(bodyStyle)bodyStyle withHttpHead:(NSDictionary *)head responseStyle:(responseStyle)style withSuccess:(void (^)(id))success withFail:(void (^)(NSError *))fail {
AFSecurityPolicy *securityPolicy = [[AFSecurityPolicy alloc] init];
[securityPolicy setAllowInvalidCertificates:YES];
NSString *url_string = [NSString stringWithString:url];
/* 建立http請求管理者 */
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
/* 處理body型別 */
switch (bodyStyle) {
case stringStyle: {
break;
}
case JSONStyle: {
break;
}
}
/* 新增請求頭 */
if (head) {
for (NSString *key in head) {
[manager.requestSerializer setValue:head[key] forHTTPHeaderField:key];
}
}
/* 判斷返回資料型別 */
switch (style) {
case DATA: {
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
break;
}
case JSON: {
manager.responseSerializer = [AFJSONResponseSerializer serializer];
break;
}
case XML: {
manager.responseSerializer = [AFXMLParserResponseSerializer serializer];
break;
}
default:
break;
}
/* 設定請求接受的資料型別 */
[manager setSecurityPolicy:securityPolicy];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
// [manager.responseSerializer setAcceptableContentTypes:[NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript",@"text/html",@"text/plain", nil]];
//本地快取設定,沙盒路徑設定
NSArray *path = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
NSString *pathString = path.lastObject;
NSString *pathLast =[NSString stringWithFormat:@"/Caches/com.hackemist.post.default/%lu.text", (unsigned long)[url_string hash]];
//建立字串檔案儲存路徑
NSString *PathName =[pathString stringByAppendingString:pathLast];
//第一次進入判斷有沒有資料夾,如果沒有就建立一個
NSString * textPath = [pathString stringByAppendingFormat:@"/Caches/com.hackemist.post.default"];
if (![[NSFileManager defaultManager]fileExistsAtPath:textPath]) {
[[NSFileManager defaultManager]createDirectoryAtPath:textPath withIntermediateDirectories:YES attributes:nil error:nil];
}
//設BOOL值 判斷解析後的資料是陣列還是字典
__block BOOL isClass = NO;
/* POST請求 */
[manager POST:url parameters:body constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
} progress:^(NSProgress * _Nonnull uploadProgress) {
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
if ([responseObject isKindOfClass:[NSArray class]]) {
isClass = YES;
} else{
isClass = NO;
}
[responseObject writeToFile:PathName atomically:YES];
success(responseObject);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSString * cachePath = PathName;
if ([[NSFileManager defaultManager] fileExistsAtPath:cachePath]) {
//從本地讀快取檔案
id responseObject = nil;
if (isClass) {
responseObject = [NSMutableArray arrayWithContentsOfFile:cachePath];
} else {
responseObject = [NSMutableDictionary dictionaryWithContentsOfFile:cachePath];
}
success(responseObject);
}
}];
}
本篇和之前寫過的關於AFN封裝的部落格掛鉤 如果不懂可以參考一下
/* 設定安全政策物件 */
AFSecurityPolicy *securityPolicy = [[AFSecurityPolicy alloc] init];
[securityPolicy setAllowInvalidCertificates:YES];
/* 使用 */
[manager setSecurityPolicy:securityPolicy];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
相關推薦
使用AFN 的POST請求出現錯誤"Error Domain=NSCocoaErrorDomain Code=3840 "決絕方案
使用最新版本的AFN 進行HTTP的網路請求偶爾遇到的問題, 有時候自己就解決了, 也不知道原因, 後來 stackOverFlow上看到一個答案試了一下 可以解決 不過他的都是用C 寫的, 簡單改了一下 還是使用AFN 程式碼 /* 主要就是給
Error Domain=NSCocoaErrorDomain Code=3840 "JSON text did not start with array or object and option t
開發中進行資料請求時候報了這個錯誤 這是因為AFN網路請求返回資料格式為json,提示這個錯誤是因為返回資料非json格式。 解決辦法: 首先檢查一下網路請求方法中是否有這句程式碼 //設定返回資料格式為JSON manager.response
Error Domain=NSCocoaErrorDomain Code=3840解決方法
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; manager.responseSerializer = [AFJSONResponseSer
iOS json 解析遇到error: Error Domain=NSCocoaErrorDomain Code=3840 "The operation couldn’t be comple
Error Domain=NSCocoaErrorDomain Code=3840 "The operation couldn’t be completed. (Cocoa error 3840.)" (Unescaped control character around
AFN3.0 PATCH請求報錯Error Domain=NSURLErrorDomain Code=-1012 "(null)"
我試圖執行一個HTTP PATCH請求,但我不斷收到錯誤域= nsurlerrordomain程式碼= 1012錯誤。我的程式碼: //封裝的請求方法 + (void)requestMethod:(NSString *)method urlStr:(NSStr
iOS Bug --- 信鴿推送報錯:Fail error Error Domain=NSCocoaErrorDomain Code=0 "Notification permission ......
背景 最近在接信鴿推送功能,打包ipa安裝到手機上,當彈出是否允許開啟推送服務的彈框後,點選 “允許”或“好”以後報下面的錯誤資訊(真機安裝ipa包收不到推送訊息): -(void)xgPushDidFinishStart:(BOOL)isSuccess error:(
iOS xcode 7網路請求錯誤failure Error Domain=NSURLErrorDomain Code=-1022 "The resource could not be loaded
在我們使用(xocde7.0)開啟以前的專案時,發現之前的專案在原來的版本上都沒有問題,在xcode7.0上網路請求部分發生了錯誤,會看到有這麼一段東西輸出在控制檯(據說7.1沒那問題); 2015-11-20 16:12:16.569 AFNetworkin
使用postMan工具測試post請求出現400錯誤的一個坑,記錄下!
1.請求頭為Content-Type:application/json,這個不用多說 2.關鍵Body,格式選擇raw,並且資料外面包裹一對花括號,這樣才能正確轉化成json格式的資料, 這個小坑,頭疼了好久,記錄下,長個教訓!!!!
django post請求 403錯誤解決方法
get django tag test http 原因 sof 配置 logs --摘 第一次用Django做項目,遇到了很多問題。 今天遇到的問題是Django在處理post請求時多次出現403錯誤。 我先描述一下問題出現的環境:我用Django寫了一個web
Intellij idea 出現錯誤 error:java: 無效的源發行版: 8解決方法
圖片 jpg tag spa pom apach bubuko 1.8 maven項目 這是由於jdk的版本與項目的要求不一致造成的,如果是maven項目,首先查看一下pom.xml,以我的項目為例: <build> <plugin
django post請求 403錯誤解決方法 django post請求 403錯誤解決方法
django post請求 403錯誤解決方法 --摘 第一次用Django做專案,遇到了很多問題。 今天遇到的問題是Django在處理post請求時多次出現403錯誤。 我先描述一下問題出現的環境:我用Django寫了一個web服務端,姑且
php ajax提交post請求出現陣列被截斷情況的解決方法
一、場景 今天做儲存專題商品列表的時候發現,前端明明有2300多條資料,但是實際服務端接受存入資料庫才166條 二、解決過程 經過除錯發現前端頁面提交post請求時資料量是正確的,但到服務端只能接受到166條。 一開始以為是post請求長度超過限制,不過看了下請求內容才200多K
安裝軟體出現錯誤Error 1935安裝程式集
修改登錄檔數值 登錄檔路徑 HKEY_LOCAL_MACHINE \SYSTEM \CurrentControlSet\Control 步驟: 開始 - 執行(輸入regedit.exe)- 確定或者回車,開啟登錄檔編輯器; 在開
Django呼叫外部js檔案post請求出現403
今天發現一個這個有意思的問題,在html中寫js程式碼功能全部正常使用,但將js程式碼放到js檔案中在呼叫就出現各種問題。 1 首先在使用jQuery動態生成標籤時,建議將自己寫的js檔案放在</body>之後 (要不然部分功能可能會失效) 2 如題所示,出現403
POST請求出現中文亂碼的問題
最近使用Java的HttpURLConnection請求rest介面時候,POST請求引數中的中文傳輸之後出現亂碼的問題,在網上找了一個親測有效的方法: 將 DataOutputStream out = null; out = new DataOutputStream(connection.getO
ubuntu 15.04開機出現錯誤“Error found when loading /root/.profile”
在剛修改完root許可權自動登入後,發現開機出現以下提示: Error found when loading /root/.profile stdin:is not a tty ………… 解決方法:在終端中用命令gedit /root/.profile,開啟檔案後
ubuntu開機出現錯誤“Error found when loading /root/.profile”解決
在剛修改完root許可權自動登入後,發現開機出現以下提示: Error found when loading /root/.profile stdin:is not a tty ===========
關於打包簽名時 出現錯誤---Error:Error: Expected resource of type styleable [ResourceType]
今天打包簽名時出現下面的錯誤---- Error:Error: Expected resource of type styleable [ResourceType]。 解決方法 @SuppressWarnings("ResourceType") //加上這個註釋 忽略
ubuntu 14.04開機出現錯誤“Error found when loading /root/.profile”解決
在剛修改完root許可權自動登入後,發現開機出現以下提示: Error found when loading /root/.profile stdin:is not a tty ………… 解決方法:在終端中用命令gedit /root/.profile,開啟檔案後找到“mesg n”, 將其更改為“tty
Error Domain=NSURLErrorDomain Code=-999 請求取消
1、錯誤一:Error Domain=NSURLErrorDomain Code=-999 導致原因: 1、一個頁面沒有被完全載入之前收到下一個請求,此時迅速會出現此error,error=-999 2、此時可能已經載入完成,則忽略此error,繼續進行載入。 2、錯