首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将WebClient.UploadString()替换为HttpClient.PostAsync

将WebClient.UploadString()替换为HttpClient.PostAsync
EN

Stack Overflow用户
提问于 2015-03-28 09:21:26
回答 2查看 6K关注 0票数 3

我想在代码中将WebClient替换为HttpClient。我必须在HttpClient中使用什么HttpClient来替换WebClient.UploadString?我的WebClient代码:

代码语言:javascript
复制
string data = string.Format("name={0}&warehouse={1}&address={2}", name, shop.Warehouse.Id, shop.Address);

using (var wc = new WebClient()) {
    wc.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
    wc.Encoding = Encoding.UTF8;

    string fullUrl = BaseUrl + url;
    string response = wc.UploadString(fullUrl, data);
    // ...
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-28 09:59:34

您可以构造您的postdata并在FormUrlEncodedContent实例中使用它,如下所示:

代码语言:javascript
复制
// This is the postdata
var data = new List<KeyValuePair<string, string>>();
data.Add(new KeyValuePair<string, string>("Name", "test"));

HttpContent content = new FormUrlEncodedContent(data);

本页中指定了一些解决方案:

How to use System.Net.HttpClient to post a complex type?

您可以决定异步或同步地提交它,例如:

代码语言:javascript
复制
HttpResponseMessage x = await httpClient.PostAsync(fullUrl, content);
票数 4
EN

Stack Overflow用户

发布于 2021-08-10 10:05:53

您也可以替换

代码语言:javascript
复制
string payload = System.IO.File.ReadAllText("e:\\IIF-Input3 (1).xml");
        try
        {
            System.Net.WebClient client = new System.Net.WebClient();
            client.Encoding = Encoding.UTF8;
            string res = client.UploadString("http://1.2.3.4:80/RunJson?name=Test", "POST", payload);
        }
        catch (System.Exception ex)
        {
            MessageBox.Show(ex.Message);
        }

使用

代码语言:javascript
复制
string payload = System.IO.File.ReadAllText("e:\\IIF-Input3 (1).xml");
var content = new System.Net.Http.StringContent(payload, System.Text.Encoding.UTF8, "application/x-www-form-urlencoded");
        var httpClient = new System.Net.Http.HttpClient();
        httpClient.BaseAddress = new Uri("http://1.2.3.4:80/");
        System.Net.Http.HttpResponseMessage response = httpClient.PostAsync("/RunJson?name=Test", content).Result;

        string result = response.Content.ReadAsStringAsync().Result;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29315498

复制
相关文章

相似问题

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