2010-09-17 72 views
3

我正在嘗試發送一個POST請求,我應該發送原始POST數據。如何使用C#發佈原始數據HttpWebRequest

我應該修改哪些屬性來實現此目的。

它是HttpWebRequest.ContentType屬性。如果,那麼我應該給它分配什麼樣的價值。

+0

的可能DUP:http://stackoverflow.com/questions/2136857/using-httpwebrequest-to-post-to-a-form-on-an-outside-server – 2010-09-17 14:04:42

+0

@Kirk沃爾,隱而不宣」似乎是重複的。這個問題想要發佈多部分/表單數據,而這似乎是發送一個單一的數據流。 – 2010-09-17 14:17:43

+0

@Jon,你爲什麼這麼說?我鏈接的問題不包含字符串「多」,看起來非常相似。 – 2010-09-17 14:23:09

回答

9
public static string HttpPOST(string url, string querystring) 
    { 
     HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); 
     request.ContentType = "application/x-www-form-urlencoded"; // or whatever - application/json, etc, etc 
     StreamWriter requestWriter = new StreamWriter(request.GetRequestStream()); 

     try 
     { 
      requestWriter.Write(querystring); 
     } 
     catch 
     { 
      throw; 
     } 
     finally 
     { 
      requestWriter.Close(); 
      requestWriter = null; 
     } 

     HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
     using (StreamReader sr = new StreamReader(response.GetResponseStream())) 
     { 
      return sr.ReadToEnd(); 
     } 
    } 
+0

請你詳細說明一下在你寫下「無論」的部分,實際上,這是我需要澄清的部分,在原始發佈的情況下應該是什麼 – 2010-09-17 19:52:14

+0

Gunner,問題是,你**意味着什麼? 「? – 2010-09-17 22:34:28

+0

我認爲這裏的'raw'這個詞是我被告知的內部術語。基本上,我需要做的就是發佈請求。」req.ContentType =「application/x-www-form-urlencoded」;「 ,這對我很有用 – 2010-09-20 14:51:30

2

您想要將ContentType屬性設置爲數據的MIME類型。如果它是一個文件,它取決於文件的類型,如果它是純文本,那麼文本/純文本,如果它是一個任意的二進制數據,你自己的本地目的然後application/octet-stream。對於基於文本的格式,您需要將charset與內容類型一起包含在內。 「text/plain; charset = UTF-8」。

然後您需要調用GetRequestStream()並將數據寫入返回的流中。

相關問題