首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 提交資料到伺服器並處理回應 (二)

     編輯:關於C語言

請求流程完整步驟

8. 關閉請求串流

dataStream.Close();

必須執行,否則伺服器不會回應。也可呼叫 System.IO.Stream.Close()。

9. 取得回應物件

WebResponse objResponse = objWebRequest.GetResponse();

9*. 檢查 HTTP 狀態

var httpResponse = (HttpWebResponse)objResponse;
if (httpResponse.StatusDescription != "OK")
{
    // 處理錯誤狀態
}

10. 取得回應串流

Stream dataStream = objResponse.GetResponseStream();

11. 處理回應資料

直接輸出到瀏覽器:

dataStream = objResponse.GetResponseStream();
var reader = new StreamReader(dataStream);
Response.Write(HttpUtility.HtmlEncode(reader.ReadToEnd()));

儲存二進位資料(檔案下載):

using var outStream = File.Create("Temp.data");
byte[] buffer = new byte[1024];
int bytesRead;
do
{
    bytesRead = dataStream.Read(buffer, 0, buffer.Length);
    if (bytesRead > 0) outStream.Write(buffer, 0, bytesRead);
} while (bytesRead > 0);

12. 關閉回應

objResponse.Close();

SOAP/XML 專用範例

var doc = new XmlDocument();
doc.Load(Server.MapPath("~") + @"\" + xmlFile);

var req = (HttpWebRequest)WebRequest.Create(@"https://s:81/5do8/webs.asmx");
req.ContentType = "text/xml;charset=utf-8";
req.Accept = "text/xml";
req.Method = "POST";

using (var stm = req.GetRequestStream())
{
    doc.Save(stm); // 直接儲存 XML 到請求串流
}

using (var resp = req.GetResponse())
using (var stm = resp.GetResponseStream())
using (var reader = new StreamReader(stm))
{
    Response.Write(HttpUtility.HtmlEncode(reader.ReadToEnd()));
}

關鍵點總結

  • 請求/回應串流務必正確關閉
  • 二進位資料使用 Stream 直接讀寫
  • XML 文件可直接 Save 到請求串流
  • 回應編碼處理需與伺服器一致
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved