栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何发出HTTP POST Web请求

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何发出HTTP POST Web请求

有几种执行HTTP

GET
POST
请求的方法:


方法A:HttpClient(首选)

可用:

.NET framework 4.5+
.NET Standard 1.1+
.NET Core 1.0+

目前,它是首选方法,并且具有异步性和高性能。在大多数情况下,请使用内置版本,但对于非常旧的平台,则提供了NuGet软件包。

using System.Net.Http;

设定

建议

HttpClient
在应用程序的生命周期中实例化一个实例,并共享它,除非您有特殊原因不这样做。

private static readonly HttpClient client = new HttpClient();

请参阅

HttpClientFactory
以获取依赖项注入解决方案。


  • POST

    var values = new Dictionary<string, string>

    {
    { “thing1”, “hello” },
    { “thing2”, “world” }
    };

    var content = new FormUrlEnpredContent(values);

    var response = await client.PostAsync("http://www.example.com/recepticle.aspx”, content);

    var responseString = await response.Content.ReadAsStringAsync();

  • GET

    var responseString = await client.GetStringAsync("http://www.example.com/recepticle.aspx");

方法B:第三方库

RestSharp

  • POST
     var client = new RestClient("http://example.com");

    // client.Authenticator = new HttpBasicAuthenticator(username, password);
    var request = new RestRequest(“resource/{id}”);
    request.AddParameter(“thing1”, “Hello”);
    request.AddParameter(“thing2”, “world”);
    request.AddHeader(“header”, “value”);
    request.AddFile(“file”, path);
    var response = client.Post(request);
    var content = response.Content; // Raw content as string
    var response2 = client.Post(request);
    var name = response2.Data.Name;

Flurl.Http

这是一个更新的库,具有流畅的API,测试助手,在后台使用HttpClient且可移植。可通过NuGet获得。

    using Flurl.Http;

  • POST

    var responseString = await "http://www.example.com/recepticle.aspx".PostUrlEnpredAsync(new { thing1 = "hello", thing2 = "world" }).ReceiveString();
  • GET

    var responseString = await "http://www.example.com/recepticle.aspx".GetStringAsync();

方法C:HttpWebRequest(不建议用于新工作)

可用:

.NET framework 1.1+
.NET Standard 2.0+
.NET Core 1.0+
。在.NET
Core中,它主要是为了兼容性-它可以包装
HttpClient
,性能较低且不会获得新功能。

using System.Net;using System.Text;  // For class Encodingusing System.IO;    // For StreamReader

  • POST

    var request = (HttpWebRequest)WebRequest.Create("http://www.example.com/recepticle.aspx");

    var postData = “thing1=” + Uri.EscapeDataString(“hello”);
    postData += “&thing2=” + Uri.EscapeDataString(“world”);
    var data = Encoding.ASCII.GetBytes(postData);

    request.Method = “POST”;
    request.ContentType = “application/x-www-form-urlenpred”;
    request.ContentLength = data.Length;

    using (var stream = request.GetRequestStream())
    {
    stream.Write(data, 0, data.Length);
    }

    var response = (HttpWebResponse)request.GetResponse();

    var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();

  • GET

    var request = (HttpWebRequest)WebRequest.Create("http://www.example.com/recepticle.aspx");

    var response = (HttpWebResponse)request.GetResponse();

    var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();


方法D:WebClient(不建议用于新工作)

这是一个包装

HttpWebRequest
。与比较
HttpClient

可在:

.NET framework 1.1+
NET Standard 2.0+
.NET Core 2.0+

using System.Net;using System.Collections.Specialized;

  • POST

    using (var client = new WebClient())

    {
    var values = new NamevalueCollection();
    values[“thing1”] = “hello”;
    values[“thing2”] = “world”;

    var response = client.UploadValues("http://www.example.com/recepticle.aspx", values);var responseString = Encoding.Default.GetString(response);

    }

  • GET

    using (var client = new WebClient())

    {
    var responseString = client.DownloadString("http://www.example.com/recepticle.aspx”);
    }



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/421520.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号