java - http请求返回200,对方服务器一定是收到请求了吗?
天蓬老师
天蓬老师 2017-04-18 10:50:12
0
4
1123

Http请求,用response.getStatusLine().getStatusCode()判断返回值为200,是不是说明对方一定收到请求了?对方是IIS服务器,我的方法已经正确返回200,日志有打印,对方却一直咬定没有收到,我没有接触过IIS服务器,除了这个人以外,别的都没有问题!并且根据对方所说,并不是一直存在类似问题,一天会出现几次,抓包都不好抓!所以想请有遇到过类似问题或有经验丰富的开发帮助分析一下!

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回覆(4)
迷茫

如果服務端回傳200,可以確實伺服器成功接收了客戶端請求。你這種情況的話,你可以把服務端回傳的報文全部記錄到log裡,包括報文頭資訊和報文體資訊以及通訊時間。當在此出現這種問題時,根據出現時間找到那條報文,然後拿這條報文與其他報文比較下,看有什麼異常沒

巴扎黑

如果沒有被劫持,在確保你程式碼沒有寫錯的情況下。那就

Ty80

有可能是對方以http 200回傳了錯誤,所以你這裡看返回狀態碼沒問題但是對方伺服器其實出錯了

阿神

首先,要先弄清楚什麼是 HTTP 200 :

2xx成功

200 OK

請求已成功,請求所希望的回應頭或資料體將隨此回應傳回。

201 Created

請求已經實現,而且有一個新的資源已經依據請求的需要而創建,且其URI已經隨Location頭信息返回。如果需要的資源無法及時創建的話,應返回'202 Accepted'。

202 Accepted

伺服器已接受請求,但尚未處理。正如它可能被拒絕一樣,最終該請求可能會也可能不會被執行。在非同步操作的場合下,沒有比發送這個狀態碼更方便的做法了。
傳回202狀態碼的回應的目的是允許伺服器接受其他流程的請求(例如某個每天只執行一次的基於批次的操作),而不必讓客戶端保持與伺服器的連線直到批次作業全部完成。在接受請求處理並傳回202狀態碼的回應應在傳回的實體中包含一些指示處理目前狀態的信息,以及指向處理狀態監視器或狀態預測的指針,以便使用者可以估計操作是否已完成。

203 Non-Authoritative Information

伺服器已成功處理了請求,但傳回的實體頭部元資訊不是在原始伺服器上有效的確定集合,而是來自本地或第三方的拷貝。目前的資訊可能是原始版本的子集或超集。例如,包含資源的元資料可能導致原始伺服器知道元資訊的超集。使用此狀態碼不是必須的,而且只有在回應不使用此狀態碼便會回傳200 OK的情況下才是合適的。

其次,你收到200的請求,僅代表服務成功收到,不代表對方的業務代碼是否能收到。一般的公司會有防火牆服務,分送服務等網路層,還有的會有業務網關層。

最後,還有檢查一下通訊的資料格式。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!