首页 > 编程语言 >C#的HttpWebRequest发送form-data数据

C#的HttpWebRequest发送form-data数据

时间:2023-11-30 17:36:14浏览次数:33  
标签:parameters form C# Dictionary AppendFormat kvp HttpWebRequest sb

以下是使用C#中的HttpWebRequest发送post请求的示例代码,请求头为form-data,可以上传文件。你可以将它封装成一个通用的方法。

 1 public static string HttpPost(string url, Dictionary<string, string> parameters, Dictionary<string, string> files)
 2 {
string strBoundary = "qwwg-" + DateTime.Now.Ticks.ToString("x");//程序生成 3 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); 4 request.Method = "POST"; 5 request.ContentType = "multipart/form-data;charset=UTF-8; boundary=" + strBoundary; 6 7 // 设置请求参数 8 StringBuilder sb = new StringBuilder(); 9 foreach (KeyValuePair<string, string> kvp in parameters) 10 { 11 sb.AppendFormat("--"+ strBoundary + "\r\n");12 sb.AppendFormat("Content-Disposition: form-data; name=\"{0}\"\r\n", kvp.Key); 13 sb.AppendFormat("\r\n{0}\r\n", kvp.Value); 14 } 15 16 // 上传文件 17 foreach (KeyValuePair<string, string> kvp in files) 18 { 19 sb.AppendFormat("--"+ strBoundary + "\r\n");20 sb.AppendFormat("Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"\r\n", kvp.Key, Path.GetFileName(kvp.Value)); 21 sb.AppendFormat("Content-Type: image/png\r\n"); 22 sb.AppendFormat("\r\n"); 23 24 byte[] fileBytes = File.ReadAllBytes(kvp.Value); 25 request.ContentLength += fileBytes.Length; 26 27 using (Stream requestStream = request.GetRequestStream()) 28 { 29 requestStream.Write(Encoding.UTF8.GetBytes(sb.ToString()), 0, sb.Length); 30 requestStream.Write(fileBytes, 0, fileBytes.Length); 31 requestStream.Write(Encoding.UTF8.GetBytes("\r\n"), 0, 2); 32 33 // 发送请求并返回响应 34 using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) 35 using (StreamReader sr = new StreamReader(response.GetResponseStream())) 36 { 37 return sr.ReadToEnd(); 38 } 39 } 40 } 41 }

调用示例:

1 string url = "http://example.com/upload";
2 Dictionary<string, string> parameters = new Dictionary<string, string>();
3 parameters["username"] = "user123";
4 parameters["password"] = "123456";
5 Dictionary<string, string> files = new Dictionary<string, string>();
6 files["avatar"] = @"C:\avatar.png";
7 string result = HttpPost(url, parameters, files);

测试结果:

底层示例数据:

另外方法:

 

标签:parameters,form,C#,Dictionary,AppendFormat,kvp,HttpWebRequest,sb
From: https://www.cnblogs.com/kingkie/p/17867870.html

相关文章

  • OpenWrt编译报错——configure: error: you should not run configure as root
    OpenWrt编译报错——configure:error:youshouldnotrunconfigureasroot具体日志如下:checkingwhethermknodcancreatefifowithoutrootprivileges...configure:error:in`/home/docker/openwrt/build_dir/host/tar-1.34':configure:error:youshouldnotrun......
  • 《初学C语言第11天》
    ////求定积分-----------已给函数接口//#include<stdio.h>//#include<stdlib.h>//#include<math.h>//doublesquare(doublex)//平方//{//  returnx*x;//x^2//}//doublecube(doublex)//立方//{//  returnx*x*x;//x^3//}///*你编写的积分函数嵌入在这里开始*//......
  • SpringBoot集成hutool配置定时任务,支持crontab和quartz表达式
    1、pom.xml引入hutool<dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>修改version</version></dependency>2、Java文件packagecom.xxx.schedule;importcn.hutool.cron.CronUtil......
  • Flat Ads将携6亿独家流量亮相白鲸GTC2023,在7V01展台等你
    一年一度的白鲸出海全球流量大会GTC重磅来袭!今年GTC出海展区全面升级,规模扩增至15000平方米,覆盖游戏、应用、技术及品牌出海等热门行业,预计将迎来累计超30000名跨境出海相关从业者莅临参观。FlatAds受邀设展,现场互动100%中奖从出海到全球化,中国互联网企业走向海外寻求增长空......
  • 专门针对工业电机控制进行优化XCZU1CG-2SFVA625I、XCZU1CG-2SFVA625E(SoC FPGA)
    CG设备典型应用:传感器处理和融合电机控制低成本超声波交通工程概述:Zynq®UltraScale+™MPSoC器件不仅提供64位处理器可扩展性,同时还将实时控制与软硬件引擎相结合,支持图形、视频、波形与数据包处理。三个不同变体包括双应用处理器(CG)器件、四核应用处理器和GPU(EG)器件......
  • AutoCAD .NET 二次开发(2020版)找到折线上剩余的顶点
    如果一条折线有两个顶点,已对其中一个顶点应用了圆角,则还剩下一个顶点。 如何通过代码找到这些剩余的顶点(可能不止一个)?可通过遍历所有顶点,判断每个点连接的两边的线是否为直线如果都为直线,则为顶点,不是圆角。代码如下:for(inti=1;i<polyline.NumberOfVertices-1;......
  • 软件测试/人工智能|Pycharm安装指南(小白版)
    简介由于Python语法简单容易入门,并且Python在办公自动化等领域的功能非常强大,所以现在越来越多非IT行业的人也开始学起了Python,要学习和使用一门编程语言,一个好用的IDE是必不可少的,而对于Python来说,最好的IDE无疑是Pycharm。本文就给大家介绍一下如何从零到一来安装Pycharm。下......
  • XmlRPC入门_组合类型操作
    1、数组操作#include<iostream>#include<winsock2.h>#include<windows.h>#include<xmlrpc-c/base.hpp>#include<xmlrpc-c/registry.hpp>#include<xmlrpc-c/server_abyss.hpp>#include<direct.h>#include<stdio.h&......
  • 软件测试/人工智能|PyCharm常用快捷键指南
    简介我们安装好pycharm之后,就要开始使用pycharm了,但是pycharm的操作太多,顶部菜单选项已经很多,每个顶部菜单的选项下又有很多个子操作,所以我们在写代码的时候,如果要进行什么操作的话,在顶部菜单操作,就会显得比较繁琐,经常要找两级甚至三级菜单,如果我们对pycharm的快捷键比较熟悉的......
  • CTF中文件包含漏洞
    0x01什么是文件包含漏洞通过PHP函数引入文件时,传入的文件名没有经过合理的验证,从而操作了预想之外的文件,就可能导致意外的文件泄漏甚至恶意代码注入。0x02文件包含漏洞的环境要求allow_url_fopen=On(默认为On)规定是否允许从远程服务器或者网站检索数据allow_url_include=On(......