搜尋

首頁  >  問答  >  主體

java - http请求返回200,对方服务器一定是收到请求了吗?

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

天蓬老师天蓬老师2806 天前1191

全部回覆(4)我來回復

  • 迷茫

    迷茫2017-04-18 10:52:12

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

    回覆
    0
  • 巴扎黑

    巴扎黑2017-04-18 10:52:12

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

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-18 10:52:12

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

    回覆
    0
  • 阿神

    阿神2017-04-18 10:52:12

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

    2xx成功

    200 OK

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

    201 Created

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

    202 Accepted

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

    203 Non-Authoritative Information

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

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

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

    回覆
    0
  • 取消回覆