HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://YOUR_URL/"); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream stream = response.GetResponseStream(); StreamReader sr = new StreamReader(stream); string result = sr.ReadToEnd();
但如果我們因為參數或網址錯誤,導致網站回應錯誤,就會取得如 400 Bad Request、404 Not Found...等等的這種http status,在瀏覽器上就會看到像這樣的畫面:
這種情況下,會在執行HttpWebRequest.GetResponse()的時候,引發WebException,原本以為就此拿不到WebResponse物件,也就不能取得網站的回應內容(Content);後來發現被藏在WebException.Response裡,這下Status Code、網站回應內容就都到手啦:
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://YOUR_URL/"); HttpWebResponse response = null; try { //執行Request //若網站回應錯誤,就會在此引發WebException response = (HttpWebResponse)request.GetResponse(); } catch (WebException e) { //網站回應錯誤, response = (HttpWebResponse)e.Response; } if (response != null) { Stream stream = response.GetResponseStream(); StreamReader sr = new StreamReader(stream); string result = sr.ReadToEnd(); switch (response.StatusCode) { case HttpStatusCode.OK: //200:正常 //(略) break; case HttpStatusCode.BadRequest: //400:錯誤 //(略) break; default: //其他狀態 //(略) break; } response.Close(); }
在使用Plurk API的時候,是透過http的狀態去判斷呼叫成功與否,200 OK代表正確,400 Bad Request就表示有錯,兩者都會用JSON字串回傳相關資訊,我們如法泡製,就可以開始用API進行開發工作了:
MSDN Reference:
其他參考資料:
您說 : 這種情況下,會在執行HttpWebResponse.GetResponse()的時候...
回覆刪除應該是HttpWebRequest.GetResponse()
的確誤植了,感謝指正。
刪除