HTTPWebRequest請求 重複傳送

2022-06-15 23:21:30 字數 1752 閱讀 3286

使用httpwebrequest請求別人的介面,請求了一次,但是對方卻收到了兩次同樣的請求,而且間隔時間為一分鐘,並且只有處理資料比較多的時候才會出現。

因為我自己的**裡是有設定超時時間的,且時間設定的是5分鐘, webrequest.timeout = 300000;

排查了很久,最後發現是因為對方使用的 nginx自身的機制裡面設定了1分鐘超時重發導致的,對方進行了介面處理優化,提高速度,並修改了超時時間,問題解決。

以下是我的httpwebrequest請求:

using system;

using system.collections.generic;

using system.configuration;

using system.io;

using system.io.compression;

using system.linq;

using system.net;

using system.net.security;

using system.security.cryptography.x509certificates;

using system.text;

using system.threading.tasks;

using jxlservice.apis.dto;

namespace jxlservice.utils

catch (webexception ex)

stream responsestream = webresponse.getresponsestream();

if (webresponse.contentencoding.tolower().contains("gzip"))

string responsestring = "";

using (streamreader reader = new streamreader(responsestream, encoding.utf8))

if (responsestring != null && responsestring.length > 0)

//else//}

else

";tresponse responseobj = jsonhelper.jsontoobject(res);

return responseobj;

//throw new exception("呼叫介面錯誤,沒有返回值");}}

///

/// 建立請求

///

/// 位址

request.headers.add(httprequestheader.acceptencoding, "gzip,deflate");//若支援壓縮 注意需要給在獲取響應時解壓

return request;

}///

/// https 校驗證書

///

///

///

///

///

///

private static bool checkvalidationresult(object sender, x509certificate certificate, x509chain chain, sslpolicyerrors errors)}}

HttpWebRequest傳送Post資料

其實傳送和get差不多需要額外多注意的是 2 傳送的url串需要自己拼接的,拼接後用ascii來解碼成byte的陣列傳送。偽 如下 string data username admin password 123456 byte bytes encoding.ascii.getbytes data r...

HttpWebRequest使用總結

httpwebrequest的keepalive預設是true,如果使用的時候僅僅只是關閉流,不關閉網絡卡上的通道的話,第二個請求在tcp沒有關閉的情況下是走同乙個通道,此時本機的tcp通道就會拋異常出來,這是本機拋的錯誤。所以除了關閉本機的io資源外,還要關閉網路資源。需要把keepalive設定...

HttpWebRequest程式設計相關問題階段總結

其實我遇到的最大問題是關於cookes的,而cookeis中,jspsessid導致的問題和domain導致的問題最嚴重。所以我就在想是不是apache中的外掛程式導致了jspsessionid的混亂?在asp.net中,當你用到session時,客戶端始終只有乙個sessionid,始終不變。而j...