首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >.NET:发送带有数据和读取响应的POST的最简单方式

.NET:发送带有数据和读取响应的POST的最简单方式
EN

Stack Overflow用户
提问于 2010-11-03 23:21:46
回答 7查看 463.4K关注 0票数 182

令我惊讶的是,在.NET BCL中,我几乎不能做这样简单的事情:

代码语言:javascript
复制
byte[] response = Http.Post
(
    url: "http://dork.com/service",
    contentType: "application/x-www-form-urlencoded",
    contentLength: 32,
    content: "home=Cosby&favorite+flavor=flies"
);

上面这段假设的代码生成了一个包含数据的HTTP POST,并从静态类Http上的Post方法返回响应。

既然我们没有这么简单的东西,那么下一个最好的解决方案是什么?

如何发送包含数据的HTTP POST并获取响应的内容?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2010-11-03 23:28:30

代码语言:javascript
复制
   using (WebClient client = new WebClient())
   {

       byte[] response =
       client.UploadValues("http://dork.com/service", new NameValueCollection()
       {
           { "home", "Cosby" },
           { "favorite+flavor", "flies" }
       });

       string result = System.Text.Encoding.UTF8.GetString(response);
   }

您将需要以下内容:

代码语言:javascript
复制
using System;
using System.Collections.Specialized;
using System.Net;

如果您坚持使用静态方法/类:

代码语言:javascript
复制
public static class Http
{
    public static byte[] Post(string uri, NameValueCollection pairs)
    {
        byte[] response = null;
        using (WebClient client = new WebClient())
        {
            response = client.UploadValues(uri, pairs);
        }
        return response;
    }
}

然后简单地说:

代码语言:javascript
复制
var response = Http.Post("http://dork.com/service", new NameValueCollection() {
    { "home", "Cosby" },
    { "favorite+flavor", "flies" }
});
票数 290
EN

Stack Overflow用户

发布于 2013-02-28 15:16:00

使用HttpClient:就Windows8应用程序开发而言,我遇到了这个问题。

代码语言:javascript
复制
var client = new HttpClient();

var pairs = new List<KeyValuePair<string, string>>
    {
        new KeyValuePair<string, string>("pqpUserName", "admin"),
        new KeyValuePair<string, string>("password", "test@123")
    };

var content = new FormUrlEncodedContent(pairs);

var response = client.PostAsync("youruri", content).Result;

if (response.IsSuccessStatusCode)
{


}
票数 80
EN

Stack Overflow用户

发布于 2010-11-03 23:25:28

使用WebRequest。来自Scott Hanselman

代码语言:javascript
复制
public static string HttpPost(string URI, string Parameters) 
{
   System.Net.WebRequest req = System.Net.WebRequest.Create(URI);
   req.Proxy = new System.Net.WebProxy(ProxyString, true);
   //Add these, as we're doing a POST
   req.ContentType = "application/x-www-form-urlencoded";
   req.Method = "POST";
   //We need to count how many bytes we're sending. 
   //Post'ed Faked Forms should be name=value&
   byte [] bytes = System.Text.Encoding.ASCII.GetBytes(Parameters);
   req.ContentLength = bytes.Length;
   System.IO.Stream os = req.GetRequestStream ();
   os.Write (bytes, 0, bytes.Length); //Push it out there
   os.Close ();
   System.Net.WebResponse resp = req.GetResponse();
   if (resp== null) return null;
   System.IO.StreamReader sr = 
         new System.IO.StreamReader(resp.GetResponseStream());
   return sr.ReadToEnd().Trim();
}
票数 47
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4088625

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档