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 ...
随机推荐
- vmware ubuntu 看不到网卡或连接不到网络
执行以下命令就可以重新请求 dhcp 服务器,一般就可以联网了, ens33 是网卡名称,根据自己的情况替换 sudo dhclient ens33 右上角网络图标消失 # 先停止服务 sudo se ...
- 以圆类 Circle 及立体图形类 Solid 为基础设计球类 Sphere
学习内容:以圆类 Circle 及立体图形类 Solid 为基础设计球类 Sphere 代码示例: package 实验三; import java.util.Scanner; class Point ...
- ES6 Promise 的链式调用
1.什么是Promise Promise 对象代表了未来将要发生的事件,用来传递异步操作的消息. 2.对象的状态不受外界影响.Promise 对象代表一个异步操作,有三种状态: pending: 初始 ...
- Vben Admin 源码学习:状态管理-错误日志
0x00 前言 本文将对 Vue-Vben-Admin 的状态管理实现源码进行分析解读,耐心读完,相信您一定会有所收获! 0x01 errorLog.ts 错误日志 文件 src\store\modu ...
- 155_模型_Power BI & Power Pivot 进销存之安全库存
155_模型_Power BI & Power Pivot 进销存之安全库存 一.背景 谈进销存的概念时,我们也需要提及另外一个概念:安全库存. 库存周转在理想的状态下是做到零库存,但是在内部 ...
- mybatis-plus对空字段 时间进行填充
package com.tanhua.sso.handler; import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; imp ...
- Improved Security for a Ring-Based Fully Homomorphic Encryption Scheme-2013:解读
本文记录阅读此论文的笔记 摘要 (1)1996年,HPS三人提出一个格上的高效加密方案,叫做NTRUEncrypt,但是没有安全性证明:之后2011年,SS等人修改此方案,将其安全规约到标准格上的困难 ...
- ExtJS 布局-Border 布局(Border layout)
更新记录: 2022年6月11日 发布. 2022年6月1日 开始. 1.说明 边框布局允许根据区域(如中心.北部.南部.西部和东部)指定子部件的位置.还可以调整子组件的大小和折叠. 2.设置布局方法 ...
- spring boot用ide新建项目遇到的restcontroller不能导入的问题
才开始学习spring boot,第一个程序helloworld就碰到@RestController和@RequestMapping(/hello)的注解都会报错的问题. 我个人的解决方法: 1.sp ...
- 全新升级的AOP框架Dora.Interception[6]: 框架设计和实现原理
本系列前面的五篇文章主要介绍Dora.Interception(github地址,觉得不错不妨给一颗星)的编程模式以及对它的扩展定制,现在我们来聊聊它的设计和实现原理.(拙著<ASP.NET C ...