2010-09-17 67 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()并将数据写入返回的流中。

相关问题