C# 发送Http请求,传文件和其他参数
- /// <summary>
- /// httpWebRequest post by dic
- /// </summary>
- /// <param name="url">url</param>
- /// <param name="APIID">appid</param>
- /// <param name="dicParams">参数</param>
- /// <param name="filePath">文件路径</param>
- /// <param name="fileParamName">文件对应的参数名</param>
- /// <returns></returns>
- public static string httpWebRequestPost(string url, string APIID, Dictionary<string, string> dicParams,
- string filePath, string fileParamName)
- {
- string boundary = "ceshi"//getRandomString(32, true, true, false, false, "");
- string Enter = "\r\n";
- HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
- request.Method = "POST";
- request.ContentType = "multipart/form-data;boundary=" + boundary;
- Stream requestStream = request.GetRequestStream();
- int dicParamsIndex = 0;
- #region 写入请求流
- foreach (var item in dicParams)
- {
- #region 定义请求体中的内容 并转成二进制
- string s = dicParamsIndex == 0 ? "" : Enter;
- s += "--" + boundary + Enter
- + "Content-Disposition: form-data; name=\"" + item.Key + "\"" + Enter + Enter
- + item.Value;
- var bytes = Encoding.UTF8.GetBytes(s);//encrypt所有字符串二进制
- #endregion
- #region 将各个二进制 写入请求流
- requestStream.Write(bytes, 0, bytes.Length);
- #endregion
- dicParamsIndex++;
- }
- #endregion
- #region 将文件转成二进制
- if (fileParamName != "" && filePath != "")
- {
- string fileName = System.IO.Path.GetFileName(filePath);
- byte[] fileBytes = File.ReadAllBytes(filePath);
- string fileStr = Enter + "--" + boundary + Enter
- + "Content-Type:application/octet-stream" + Enter
- + "Content-Disposition: form-data; name=\"file\"; " +
- "filename=\"" + fileName + "\"" + Enter + Enter;
- var fileStrByte = Encoding.UTF8.GetBytes(fileStr);//encrypt所有字符串二进制
- requestStream.Write(fileStrByte, 0, fileStrByte.Length);
- requestStream.Write(fileBytes, 0, fileBytes.Length);
- }
- #endregion
- #region 结束标签
- string endStr = Enter + "--" + boundary + "--";
- var endBytes = Encoding.UTF8.GetBytes(endStr);
- requestStream.Write(endBytes, 0, endBytes.Length);
- #endregion
- #region 发送请求
- HttpWebResponse response = (HttpWebResponse)request.GetResponse();//发送
- Stream responseStream = response.GetResponseStream();//获取返回值
- StreamReader streamReader = new StreamReader(responseStream, Encoding.GetEncoding("utf-8"));
- string responseString = streamReader.ReadToEnd();
- streamReader.Close();
- responseStream.Close();
- #endregion
- return responseString;
- }
C# 发送Http请求,传文件和其他参数的更多相关文章
- .Net使用HttpClient以multipart/form-data形式post上传文件及其相关参数
前言: 本次要讲的是使用.Net HttpClient拼接multipark/form-data形式post上传文件和相关参数,并接收到上传文件成功后返回过来的结果(图片地址,和是否成功).可能有很多 ...
- JQuery发送ajax请求不能用数组作为参数
JQuery发送ajax请求不能用数组作为参数,否则会接收不到参数, 一.js代码如下: $('#delete-button').click(function(){ var select ...
- HTML5+AJAX原生分块上传文件的关键参数设置
processData:false 这是jquery.ajax的一个参数.默认值为true,表示会将非字符串对象自动变成k1=v1&k2=v2的形式,例如一个数组参数{d:[1,2]},到服务 ...
- jquery ajax 上传文件和传递参数到一个接口的实现方法
参考:https://blog.csdn.net/qq_15674631/article/details/81095284 参考:https://www.jianshu.com/p/46e6e03a0 ...
- Django上传文件的那些参数
# ################## 默认文件上传配置 ######################## from django.core.files.uploadhandler import M ...
- java 调用Spring接口上传文件及其他参数填充
第一步:在Spring配置中添加以下内容 <!-- 配置MultipartResolver 用于文件上传 使用spring的CommosMultipartResolver --> < ...
- ajax异步上传文件之data参数----小哈学js
下载ajaxFileUpload.js(下载网址:http://fileuploadajax.codeplex.com/downloads/get/20976) 修改ajaxFileUpload.js ...
- element-ui upload上传文件并携带参数 使用formData对象
需求:上传文件的时候,需要携带其他的参数 问题:使用upload上传文件时,必须使用formData对象,而其他的参数通过data获取的到的,formData和data是不能同时传输的 解决:获取到的 ...
- JAVA发送POST请求携带JSON格式字符串参数
import org.apache.commons.lang.StringUtils; import org.apache.http.HttpEntity; import org.apache.htt ...
随机推荐
- [源码解析] TensorFlow 分布式之 ClusterCoordinator
[源码解析] TensorFlow 分布式之 ClusterCoordinator 目录 [源码解析] TensorFlow 分布式之 ClusterCoordinator 1. 思路 1.1 使用 ...
- node-sass,sass-loader和node之间的关系
vue-cli运行在node平台上scss语言是运行在 node-sass平台上node-sass的运行环境是node平台vue-cli工程中不识别scss语法,.scss模块,sass-loader ...
- 用STM32玩L298N(正反转、调速)
目录 用STM32玩L298N(正反转.调速) 控制直流电机正反转 使用PWM调速 用STM32玩L298N(正反转.调速) 开发板:STM32F103ZET6(正点原子F103核心板)/STM32F ...
- 【算法】Floyd算法
什么是Floyd Floyd用于求最短路程.举个栗子,给你一张图,让你求出点[1]到点[5]的最短路程,你会怎么求? (画图工具:CS Academy) 如上图,有向边分别是 1->2 1-& ...
- 6月6日,HTTP/3 正式发布了!
经过了多年的努力,在 6 月 6 号,IETF (互联网工程任务小组) 正式发布了 HTTP/3 的 RFC, 这是超文本传输协议(HTTP)的第三个主要版本,完整的 RFC 超过了 20000 字, ...
- [学习笔记]使用Docker+Jenkin自动化流水线发布.Net应用
使用Docker容器方案可以快速安全地将项目部署到客户的服务器上,作为公司项目,需要解决两个问题: 1. 需要搭建一个私有的Docker仓库,以便安全的存储镜像 2. 需要一套自动化发布方案,实现代 ...
- Java绘图基础
<零基础学Java> Java绘图基础 绘图是高级程序设计中非常重要的技术,例如,应用程序需要绘制闪屏图像.背景图像.组件外观Web程序可以绘制统计图.数据库存储的图像资源等. Graph ...
- Git使用 - 忽略特定文件 - gitignore
1. 背景 2. 创建.gitignore 文件 3. 文件内容样式 4. exclude文件 5. gitignore 文件模板 6. 参考文档 1. 背景 前提知识:在工作目录下的每一个文件都不外 ...
- ABAP CDS-基础语法规则
The general syntax rules for the DDL and the DCL in ABAP CDS are: Keywords Keywords must be all uppe ...
- ShardingSphere-proxy-5.0.0建立mysql读写分离的连接(六)
一.修改配置文件config-sharding.yaml,并重启服务 # # Licensed to the Apache Software Foundation (ASF) under one or ...