html发送post请求,如何发出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();

POST

var values = new Dictionary

{

{ “thing1”, “hello” },

{ “thing2”, “world” }

};

var content = new FormUrlEncodedContent(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:第三方库

POSTvar 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;

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

using Flurl.Http;

POST

var responseString = await "http://www.example.com/recepticle.aspx"

.PostUrlEncodedAsync(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 Encoding

using 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-urlencoded”;

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”);

}

2020-05-19

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 HtmlUnit 发送 POST 请求可以通过模拟表单提交来实现。下面是一个示例代码片段,演示了如何使用 HtmlUnit 发送 POST 请求: ```java import com.gargoylesoftware.htmlunit.BrowserVersion; import com.gargoylesoftware.htmlunit.WebClient; import com.gargoylesoftware.htmlunit.WebRequest; import com.gargoylesoftware.htmlunit.html.HtmlForm; import com.gargoylesoftware.htmlunit.html.HtmlPage; import com.gargoylesoftware.htmlunit.util.NameValuePair; import java.net.URL; import java.util.ArrayList; import java.util.List; public class HtmlUnitHttpPostExample { public static void main(String[] args) throws Exception { try (WebClient webClient = new WebClient(BrowserVersion.CHROME)) { webClient.getOptions().setJavaScriptEnabled(true); webClient.getOptions().setCssEnabled(false); // 创建 POST 请求的 URL URL url = new URL("http://example.com/postEndpoint"); // 创建 POST 请求参数 List<NameValuePair> parameters = new ArrayList<>(); parameters.add(new NameValuePair("param1", "value1")); parameters.add(new NameValuePair("param2", "value2")); // 创建 POST 请求 WebRequest request = new WebRequest(url); request.setHttpMethod(WebRequest.POST_METHOD); request.setRequestParameters(parameters); // 发送 POST 请求 HtmlPage page = webClient.getPage(request); // 获取响应内容 String responseJson = page.asXml(); // 输出结果 System.out.println(responseJson); } } } ``` 在上述示例中,我们首先创建了一个 `WebClient` 对象,并启用了 JavaScript。然后,创建了一个 `URL` 对象来指定 POST 请求的目标地址。接下来,我们创建了一个包含请求参数的 `NameValuePair` 列表。然后,使用 `WebRequest` 对象来设置 HTTP 方法为 POST,并设置请求参数。最后,使用 `getPage` 方法发送 POST 请求,并获取响应页面。可以将响应内容转换为字符串,以便进一步处理。 请注意,上述示例中的 URL 和请求参数仅作为示例,你需要根据实际情况修改为你要发送 POST 请求的目标地址和参数。 使用 HtmlUnit 发送 POST 请求时,你可以模拟表单提交的方式,发送请求并获取响应结果。这对于模拟用户行为、进行自动化测试或与 Web 服务进行交互非常有用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值