你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> IOS 出現問題POST網絡請求狀態code:500的解決方法

IOS 出現問題POST網絡請求狀態code:500的解決方法

編輯:IOS開發綜合

IOS 出現問題POST網絡請求狀態code:500的解決方法

前言:

iOS 10 用 [NSURLSession uploadTaskWithRequest:request fromData:jsondata completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error){}];

進行post網絡請求時 出現 500 錯誤

出現500 的錯誤 服務器遇到了一個未曾預料的狀況,導致了它無法完成對請求的處理。一般來說,這個問題都會在服務器的程序碼出錯時出現。IOS HTTP請求的常見狀態碼總結

雖然出現這種原因是服務器的錯誤,我覺得服務器解析請求數據也有可能出現這個錯誤狀態500,所以我從客服端入手。
打印返回時的 response 裡面的值為

:<NSHTTPURLResponse: 0x17003a900> { URL: 你的url地址 } { status code: 500, 

headers {
 "Cache-Control" = private
 "Content-Length" = 3306;
 "Content-Type" = "text/html; charset=utf-8";
 Date = "Sun, 09 Oct 2016 07:45:13 GMT";
 Server = "Microsoft-IIS/7.5";
 "X-AspNet-Version" = "4.0.30319";
 "X-Powered-By" = "ASP.NET";
} }

從中我們可以看到,返回類型不是json而是text/html類型

我們知道,在post請求是需要設置請求頭數據類型,以上出錯的請求我是這樣設置的

[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; 

這個設置方法是我從提交圖片的網絡請求方法拷貝過來的,即@"application/x-www-form-urlencoded"這個類型是提交圖片的類型設置(提交圖片時把提交圖片參數轉成NSData然後再轉成base64的NSData提交)。而我的本次請求是提交json字符串的NSData類型。所以"Content-Type"的值設置成”application/json“即可。詳解Http請求中Content-Type講解以及在Spring MVC中的應用

我的解決方法是重新設置 如下:

[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; 

請求 response 大家可以和上面的做對比。

<NSHTTPURLResponse: 0x17403fe60> { URL: 你的url地址 } { status code: 200, headers {
 "Cache-Control" = private;
 "Content-Length" = 75;
 "Content-Type" = "application/json; charset=utf-8";
 Date = "Sun, 09 Oct 2016 07:56:16 GMT";
 Server = "Microsoft-IIS/7.5";
 "X-AspNet-Version" = "4.0.30319";
 "X-AspNetMvc-Version" = "4.0";
 "X-Powered-By" = "ASP.NET";
} } 

現在的  status code: 200, 解決了 500 錯誤的問題。出現這個錯誤也有可能後台對數據的處理錯誤,或者後台返回的數據類型和前端設置需要返回的類型沖突等。還是得具體問題具體分析

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved