原生js发送post请求_javascript发送post请求

原生js发送post请求_javascript发送post请求环境:vs201916.5.1aspnetcore3.1.1fiddlerrestsharp106.10.1说明:要测试restsharp的功能,首先需要了解http传参和下载上传文件的原理,请参考:c#:从http请求报文看http协议中参数传递的几种方式c#使用Http上传下载文件一、首先准备webapi项目usingSystem;usingSystem.C……

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

环境:

  • vs2019 16.5.1
  • aspnetcore 3.1.1
  • fiddler
  • restsharp 106.10.1

说明:
要测试restsharp的功能,首先需要了解http传参和下载上传文件的原理,请参考:
c#:从http请求报文看http协议中参数传递的几种方式
c#使用Http上传下载文件

.net core/.net 5/.net 6 及以上框架,建议直接使用 HttpClient,参照:《c#:HttpClient使用详解》

一、restsharp介绍

RestSharp是一个轻量的,不依赖任何第三方的组件或者类库的Http的组件。RestSharp具体以下特性:
1、支持.NET 3.5+,Silverlight 4, Windows Phone 7, Mono, MonoTouch, Mono for Android, Compact Framework 3.5,.NET Core等
  2、通过NuGet方便引入到任何项目 ( Install-Package restsharp )
  3、可以自动反序列化XML和JSON
  4、支持自定义的序列化与反序列化
  5、自动检测返回的内容类型
  6、支持HTTP的GET, POST, PUT, HEAD, OPTIONS, DELETE等操作
  7、可以上传多文件
  8、支持oAuth 1, oAuth 2, Basic, NTLM and Parameter-based Authenticators等授权验证等
  9、支持异步操作
  10、极易上手并应用到任何项目中
以上是RestSharp的主要特点,通用它你可以很容易地用程序来处理一系列的网络请求(GET, POST, PUT, HEAD, OPTIONS, DELETE),并得到返回结果。
restsharp官网:http://restsharp.org/

二、首先准备webapi项目

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
namespace testweb.Controllers
{ 

[ApiController]
[Route("[controller]/[action]")]
public class TestController : ControllerBase
{ 

public async Task<IEnumerable<object>> TestGet()
{ 

return new object[] { 
 new { 
 Name = "小明", age = 20 }, new { 
 Name = "小花", age = 18 } };
}
public async Task<IEnumerable<object>> TestPost()
{ 

return new object[] { 
 new { 
 Name = "post小明", age = 20 }, new { 
 Name = "post小花", age = 18 } };
}
[HttpGet]
[HttpPost]
public async Task<string> TestUrlPara([FromQuery]string name, [FromQuery]int? age)
{ 

return $"hello { 
name},你{ 
age}岁了!";
}
[HttpPost]
public async Task<string> TestPostUrlFormUrlencoded([FromForm]string name, [FromForm]int? age)
{ 

return $"hello { 
name},你{ 
age}岁了!";
}
[HttpPost]
public async Task<string> TestPostUrlFormData([FromForm]string name, [FromForm]int? age)
{ 

return $"hello { 
name},你{ 
age}岁了,你上传了{ 
Request.Form.Files.Count}个文件!";
}
[HttpPost]
public string TestBodyJson([FromBody]User user)
{ 

if (user == null) return "user is null.";
return Newtonsoft.Json.JsonConvert.SerializeObject(user);
}
[HttpGet]
public IActionResult TestDownLoad()
{ 

var filepath = @"C:\Users\AUAS\Pictures\百度下载图片\timg.jpg";
FileStream fs = new FileStream(filepath, FileMode.Open);
return File(fs, "application/octet-stream", "test.png");
}
}
public class User
{ 

public string name { 
 get; set; }
public int? id { 
 get; set; }
}
}

三、开始测试restsharp发送各种类型http请求和下载文件

3.1 首先nuget包引入restsharp

在这里插入图片描述

3.2 直接看测试代码

using RestSharp;
using System;
using System.IO;
namespace restsharpdemo
{ 

class Program
{ 

private static RestClient client = new RestClient("http://localhost:5000/");
static void Main(string[] args)
{ 

//TestGet();
//TestPost();
//TestUrlPara();
//TestPostUrlFormUrlencoded();
//TestPostUrlFormData();
//TestBodyJson();
//TestDownLoad();
Console.WriteLine("Hello World!");
Console.ReadLine();
}
/// <summary>
/// 测试下载文件
/// </summary>
private static void TestDownLoad()
{ 

string tempFile = Path.GetTempFileName();
using (var writer = File.OpenWrite(tempFile))
{ 

var req = new RestRequest("test/TestDownLoad", Method.GET);
req.ResponseWriter = responseStream =>
{ 

using (responseStream)
{ 

responseStream.CopyTo(writer);
}
};
var response = client.DownloadData(req);
}
}
/// <summary>
/// 测试传递application/json类型参数
/// </summary>
private static void TestBodyJson()
{ 

var req = new RestRequest("test/TestBodyJson", Method.POST);
req.AddJsonBody(new { 
 name = "小花", id = 23 });
var res = client.Execute(req);
if (res.IsSuccessful)
{ 

Console.WriteLine($"成功:{ 
res.Content}");
}
else
{ 

if (res.StatusCode == 0)
{ 

Console.WriteLine($"失败:网络错误:{ 
res.ErrorMessage}");
}
else
{ 

Console.WriteLine($"失败:{ 
(int)res.StatusCode}-{ 
res.StatusDescription}");
}
}
}
/// <summary>
/// 测试传递post multipart/form-data参数
/// </summary>
private static void TestPostUrlFormData()
{ 

var req = new RestRequest("test/TestPostUrlFormData", Method.POST);
req.AlwaysMultipartFormData = true;
req.AddParameter("name", "小明");
req.AddParameter("age", "20");
req.AddFile("file1", @"C:\Users\AUAS\Pictures\百度下载图片\timg.jpg");
var res = client.Execute(req);
if (res.IsSuccessful)
{ 

Console.WriteLine($"成功:{ 
res.Content}");
}
else
{ 

if (res.StatusCode == 0)
{ 

Console.WriteLine($"失败:网络错误:{ 
res.ErrorMessage}");
}
else
{ 

Console.WriteLine($"失败:{ 
(int)res.StatusCode}-{ 
res.StatusDescription}");
}
}
}
/// <summary>
/// 测试传递post application/x-www-form-urlencoded参数
/// </summary>
private static void TestPostUrlFormUrlencoded()
{ 

var req = new RestRequest("test/TestPostUrlFormUrlencoded", Method.POST);
//将参数编码后加到url上
req.AddHeader("Content-Type", "application/x-www-form-urlencoded");
req.AddParameter("name", "小明");
req.AddParameter("age", "20");
var res = client.Execute(req);
if (res.IsSuccessful)
{ 

Console.WriteLine($"成功:{ 
res.Content}");
}
else
{ 

if (res.StatusCode == 0)
{ 

Console.WriteLine($"失败:网络错误:{ 
res.ErrorMessage}");
}
else
{ 

Console.WriteLine($"失败:{ 
(int)res.StatusCode}-{ 
res.StatusDescription}");
}
}
}
/// <summary>
/// 测试传递url参数
/// </summary>
private static void TestUrlPara()
{ 

var req = new RestRequest("test/TestUrlPara", Method.GET);
req = new RestRequest("test/TestUrlPara", Method.POST);
//将参数编码后加到url上
req.AddParameter("name", "小明");
req.AddParameter("age", "18");
var res = client.Get(req);
if (res.IsSuccessful)
{ 

Console.WriteLine($"成功:{ 
res.Content}");
}
else
{ 

if (res.StatusCode == 0)
{ 

Console.WriteLine($"失败:网络错误:{ 
res.ErrorMessage}");
}
else
{ 

Console.WriteLine($"失败:{ 
(int)res.StatusCode}-{ 
res.StatusDescription}");
}
}
}
/// <summary>
/// 测试简单post
/// </summary>
private static void TestPost()
{ 

var req = new RestRequest("test/testpost", Method.POST);
var res = client.Post(req);
if (res.IsSuccessful)
{ 

Console.WriteLine($"成功:{ 
res.Content}");
}
else
{ 

if (res.StatusCode == 0)
{ 

Console.WriteLine($"失败:网络错误:{ 
res.ErrorMessage}");
}
else
{ 

Console.WriteLine($"失败:{ 
(int)res.StatusCode}-{ 
res.StatusDescription}");
}
}
}
/// <summary>
/// 测试简单get
/// </summary>
private static void TestGet()
{ 

var req = new RestRequest("test/testget", Method.GET);
var res = client.Get(req);
if (res.IsSuccessful)
{ 

Console.WriteLine($"成功:{ 
res.Content}");
}
else
{ 

if (res.StatusCode == 0)
{ 

Console.WriteLine($"失败:网络错误:{ 
res.ErrorMessage}");
}
else
{ 

Console.WriteLine($"失败:{ 
(int)res.StatusCode}-{ 
res.StatusDescription}");
}
}
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/196157.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • dos攻击防范 php,DOS攻击和DDOS攻击的区别「建议收藏」

    dos攻击防范 php,DOS攻击和DDOS攻击的区别「建议收藏」DOS攻击和DDOS攻击的区别DDOS和DOS攻击都会使计算机或网络无法提供正常的服务;而DDOS和DOS的区别在于,DDOS是一种分布式拒绝服务,会将多个计算机联合起来作为攻击平台,对一个或多个目标发动DDoS攻击,从而成倍地提高拒绝服务攻击的威力。如何防DOS攻击和DDOS攻击1、带宽资源要充足带宽直接决定了抗DDOS攻击的能力,至少要选择100M带宽的,越多越好。2、服务器的硬件配置在带宽以…

  • cmd常用命令大全文库_dos命令大全及详解

    cmd常用命令大全文库_dos命令大全及详解刚接触电脑的时候是从DOS系统开始,DOS时代根本就没有Windows这样的视窗操作界面,只有一个黑漆漆的窗口,让你输入命令。所以学DOS系统操作,cmd命令提示符是不可或缺的。可以告诉大家,大多数的

  • html左侧浮动广告代码,网站侧边栏广告固定浮动效果的实现「建议收藏」

    html左侧浮动广告代码,网站侧边栏广告固定浮动效果的实现「建议收藏」对于页面内容很长的网站来说,经常会出现浏览内容的时候,侧栏已经空了,没内容了,这对于网站广告来说非常可以,如果侧栏空了之后能固定一个广告的话,那样对网站和用户双方的体验都不错,下面就说说具体实现的方法。先在网站加入jquery.js,一般网站都已经加过这个js,因此可以跳过,没有用的网站则需要在网站header部分加入jquery.js代码。之后,编辑侧栏模板,在侧栏最底部加入广告代码,代码如下:…

  • 缓存雪崩和缓存穿透解决方案

    缓存雪崩和缓存穿透解决方案

  • 能否利用Hadoop搭建完整的云计算平台「建议收藏」

    Hadoop并不完全代表云计算,所以,要用Hadoop搭建完整的云计算平台,答案是不够。我们常说云计算,实际上还是通过计算机的大规模或者说海量处理来为生活中各式各样的人和各行各业服务——所以,核心在“服务”。关于服务,展开来就是常用的那3种(也是事实上的标准):SaaS,PaaS,IaaS。对云计算来说,公有和私有,虚拟和存储,这其实是相对讨论的核心。回头说Hadoop。在Google三大…

  • dsp运动控制卡_营销行动方案控制

    dsp运动控制卡_营销行动方案控制ARM+FPGA运动控制卡运动控制卡方案运动控制卡方案运动控制卡方案由于ARM源码核心运动控制算法部分缺失,因此便宜出售此资料,拍前请了解好,不接受退货,资料包含此运动控制卡原理图,PCB图,FPGA源码,ARM去掉算法后的框架源码,拍下后发邮箱。本运动控制卡采用ARM单片机+FPGA架构;ARM单片机是基于Cortex-M3内核的LM3S6911,插补核心算法均在该ARM内完成,一方面通过以太网与上位机界面交换加工数据,另一方面与FPGA(ALTERA的EP1C3)交换加工脉冲计数与IO

    2022年10月15日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号