亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用HttpWebRequest連接HTTP服務判斷是否連通,各種異常??!

使用HttpWebRequest連接HTTP服務判斷是否連通,各種異常?。?/h1>
DIEA 2018-12-07 04:53:52
public void TryConnectByHttpRequest() ??????? { ??????????? HttpWebRequest httpReq = null; ??????????? try ??????????? { ??????????????? if (!string.IsNullOrEmpty(this.servUrl)) ??????????????? { ??????????????????? string param = "test1=zh-CN&test2=request"; ??????????????????? byte[] data = Encoding.ASCII.GetBytes(param); ? ??????????????????? httpReq = (HttpWebRequest)HttpWebRequest.Create(this.servUrl); ??????????????????? httpReq.Method = "POST";//不用Post用Get某些Http服務會報錯:遠程服務器返回錯誤: (411) 所需的長度。 ??????????????????? httpReq.ContentType = "application/x-www-form-urlencoded;charset=gb2312"; ??????????????????? httpReq.ContentLength = data.Length; ??????????????????? //忽略緩存,完全使用服務器滿足請求 ??????????????????? httpReq.CachePolicy = new RequestCachePolicy(RequestCacheLevel.NoCacheNoStore); ??????????????????? //響應延時為4S ??????????????????? httpReq.Timeout = 4000; ??????????????????? //這個在Post的時候,一定要加上,如果服務器返回錯誤,他還會繼續再去請求,不會使用之前的錯誤數據,做返回數據 ??????????????????? httpReq.ServicePoint.Expect100Continue = false; ??????????????????? httpReq.ServicePoint.ConnectionLimit = 500; ? ??????????????????? using (Stream reqStream = httpReq.GetRequestStream()) ??????????????????? { ??????????????????????? reqStream.Write(data, 0, data.Length); ??????????????????? } ? ??????????????????? IAsyncResult result = httpReq.BeginGetResponse(new AsyncCallback(RespCallback), httpReq); ? ??????????????????? int DefaultTimeout = 2 * 60 * 1000; // 2 minutes timeout ??????????????????? ThreadPool.RegisterWaitForSingleObject(result.AsyncWaitHandle, new WaitOrTimerCallback(TimeoutCallback), httpReq, DefaultTimeout, true); ??????????????? } ??????????? } ??????????? catch (WebException ex) ??????????? { ??????????????? FrmMain.Instance.WriteClientLog("嘗試連接Web服務出現異常:" + ex.Message); ??????????? } ??????? } ? ??????? public void TryConnectByHttpRequestGet() ??????? { ??????????? HttpWebRequest httpReq = null; ??????????? try ??????????? { ??????????????? if (!string.IsNullOrEmpty(this.servUrl)) ??????????????? { ??????????????????? httpReq = (HttpWebRequest)HttpWebRequest.Create(this.servUrl); ??????????????????? httpReq.Method = "GET"; ??????????????????? httpReq.ContentType = "application/x-www-form-urlencoded;charset=gb2312"; ??????????????????? //忽略緩存,完全使用服務器滿足請求 ??????????????????? httpReq.CachePolicy = new RequestCachePolicy(RequestCacheLevel.NoCacheNoStore); ??????????????????? //響應延時為4S ??????????????????? httpReq.Timeout = 4000; ? ??????????????????? IAsyncResult result = httpReq.BeginGetResponse(new AsyncCallback(RespCallback), httpReq); ? ??????????????????? int DefaultTimeout = 2 * 60 * 1000; // 2 minutes timeout ??????????????????? ThreadPool.RegisterWaitForSingleObject(result.AsyncWaitHandle, new WaitOrTimerCallback(TimeoutCallback), httpReq, DefaultTimeout, true); ??????????????? } ??????????? } ??????????? catch (WebException ex) ??????????? { ??????????????? FrmMain.Instance.WriteClientLog("嘗試連接Web服務出現異常:" + ex.Message); ??????????? } ??????? } ? 上面寫的兩個方法分別是用的Post 和Get請求! ? 客戶公司提供了HTTP服務 我用Post方法正常連通 Get方法異常:遠程服務器返回錯誤: (411) 所需的長度。 我自己用HttpListener寫的Http服務 我用Post方法異常:操作超時 Get方法正常連通。 ? 為啥會出現不同的情況啊?還有一般去請求HTTP到底是用Get還是Http啊?
查看完整描述

2 回答

?
精慕HU

TA貢獻1845條經驗 獲得超8個贊

從名稱上看,大致上,我們通常這樣分:如果是從服務器下載數據,一般用GET(獲取的意思),如果是從客戶端提交數據,一般用POST(提交的意思) 當然,這兩者并沒有明確的界限。獲取數據也可以用POST,提交數據也可以用GET(如果提交的數據為簡單數據的話)
查看完整回答
反對 回復 2018-12-09
?
揚帆大魚

TA貢獻1799條經驗 獲得超9個贊

你可要從服務上獲取數據,使用get方法,要制定獲取數據的長度,要不然服務器不知道你要獲取多少。
查看完整回答
反對 回復 2018-12-09
  • 2 回答
  • 0 關注
  • 687 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號