webclient上传数据到ashx服务
1.上传参数
UploadData()方法可以上传数据参数,需要将所要上传的数据拼成字符。
// 创建一个新的 WebClient 实例.
WebClient myWebClient = new WebClient();
string postData = "Username=admin&Password=admin";
// 注意这种拼字符串的ContentType
myWebClient.Headers.Add("Content-Type","application/x-www-form-urlencoded");
// 转化成二进制数组
byte[] byteArray = Encoding.ASCII.GetBytes(postData);
// 上传数据,并获取返回的二进制数据.
byte[] responseArray = myWebClient.UploadData(远程服务URI,"POST",byteArray);
2.上传文件
UploadFile()方法可以上传文件,只要获取文件上传文件的地址即可。
String uriString = "远程服务URI";
// 创建一个新的 WebClient 实例.
WebClient myWebClient = new WebClient();
string fileName = @"文件地址";
// 直接上传,并获取返回的二进制数据.
byte[] responseArray = myWebClient.UploadFile(uriString,"POST",fileName);
3.上传参数和文件
使用UploadData()方法,把文件拼接成byte[] data数据Post过去,就可以达到同样的效果。
System.IO.FileStream zipfs = new System.IO.FileStream(ZipPath, FileMode.Open, FileAccess.Read);//testdata.zip
byte[] byteZipFile = new byte[zipfs.Length];
zipfs.Read(byteZipFile, 0, Convert.ToInt32(zipfs.Length));
zipfs.Close();
string formStart = "--margin\r\n" +
"Content-Disposition: form-data; name=\"FileData\"; FileName=\"" + ZipName + "\"\r\n" +
"Content-Type: application/octet-stream\r\n\r\n";//; LayerName=\"GDGA_ZD\"
string formEnd = "\r\n--margin--\r\n";
byte[] btStart = Encoding.UTF8.GetBytes(formStart);
byte[] btEnd = Encoding.UTF8.GetBytes(formEnd);
byte[] bytes = new byte[btStart.Length + byteZipFile.Length+ btEnd.Length];
btStart.CopyTo(bytes, 0);
byteZipFile.CopyTo(bytes, btStart.Length);
btEnd.CopyTo(bytes, btStart.Length + byteZipFile.Length);
WebClient client = new WebClient();
client.Encoding = System.Text.Encoding.UTF8;
client.Headers.Add("Content-Type", "multipart/form-data; boundary=margin");
client.Headers.Add("ContentLength", bytes.Length.ToString());
client.UploadData(new Uri("你的服务地址"), "POST", bytes);
4.上传多文件(不同类型文件)
同理,使用UploadData()方法,把不同的文件拼接成byte[],再合并 data数据Post过去
例如:
// 生成需要上传的二进制数组
CreateBytes cb = new CreateBytes();
// 所有表单数据
ArrayList bytesArray = new ArrayList();
//zip文件流
FileStream zipfs = new FileStream(ZipPath, FileMode.Open,FileAccess.Read, FileShare.Read);
string ContentType = "application/octet-stream";
byte[] zipfileBytes = new byte[zipfs.Length];
zipfs.Read(zipfileBytes, 0, Convert.ToInt32(zipfs.Length));
bytesArray.Add(cb.CreateFieldData("FileData", ZipPath, ContentType, zipfileBytes));
//xml文件流
FileStream xmlfs = new FileStream(Checkxml, FileMode.Open, FileAccess.Read, FileShare.Read);
string contentType = "text/xml";
byte[] xmlfileBytes = new byte[xmlfs.Length];
xmlfs.Read(xmlfileBytes, 0, Convert.ToInt32(xmlfs.Length));
bytesArray.Add(cb.CreateFieldData("xmlData", Checkxml, contentType, xmlfileBytes));
// 合成所有文件并生成二进制数组
byte[] bytes = cb.JoinBytes(bytesArray);
WebClient client = new WebClient();
client.Encoding = System.Text.Encoding.UTF8;//定义对象语言
client.Headers.Add("Content-Type", cb.ContentType);
client.Headers.Add("ContentLength", bytes.Length.ToString());
client.UploadData(new Uri("上传服务地址"), "POST", bytes);
webclient上传数据到ashx服务的更多相关文章
- webclient上传下载文件
定义WebClient使用的操作类: 操作类名称WebUpDown WebClient上传文件至Ftp服务: //// <summary> /// WebClient上传文件至Ftp服务 ...
- 利用WebClient上传参数及文件流到远程ashx服务
原文 利用WebClient上传参数及文件流到远程ashx服务 1 思路: WebClient.UploadFile()方法可以上传文件:UploadData()方法可以上传数据参数:如何合二为一既上 ...
- 使用WebClient上传文件并同时Post表单数据字段到服务端
之前遇到一个问题,就是使用WebClient上传文件的同时,还要Post表单数据字段,一开始以为WebClient可以直接做到,结果发现如果先 Post表单字段,就只能获取到字段及其值,如果先上传文件 ...
- Amazon MWS 上传数据 (一) 设置服务
Amazon 上传数据的流程为: 通过 SubmitFeed 操作.加密标头和所有必需的元数据(包括 FeedType 的值在内),来提交 XML 或文本型数据文件.正如亚马逊 MWS的所有提交内容一 ...
- 重新想象 Windows 8.1 Store Apps (89) - 通信的新特性: 下载数据, 上传数据, 上传文件
[源码下载] 重新想象 Windows 8.1 Store Apps (89) - 通信的新特性: 下载数据, 上传数据, 上传文件 作者:webabcd 介绍重新想象 Windows 8.1 Sto ...
- TortoiseGit和msysGit安装及使用笔记(windows下使用上传数据到GitHub)[转]
TortoiseGit和msysGit安装及使用笔记(windows下使用上传数据到GitHub) Git-1.7.11-preview+GitExtensions244SetupComplete+T ...
- Amzon MWS API开发之 上传数据
亚马逊上传数据,现有能操作的功能有很多:库存数量.跟踪号.价格.商品....... 我们可以设置FeedType值,根据需要,再上传对应的xml文件即可. 下面可以看看FeedType类型 这次我们拿 ...
- Amazon MWS 上传数据 (三) 提交请求
前面介绍了设置服务和构造请求,现在介绍提交请求. 上传数据,查询上传操作的工作状态,和处理上传操作返回的报告操作使用的Amazon API 分别为:SubmitFeed(),FeedSubmissio ...
- Amazon MWS 上传数据 (二) 构造请求
上一篇文章提到了Amazon 上传数据有三个步骤,但是每个步骤都需要构造服务和构造请求,服务是一样的,请求各不相同:这个很容易理解,这三个步骤都需要和Amazon服务器交互,所以他们的服务构造是一样的 ...
随机推荐
- golang获取u盘序列号(通过读取注册表实现)
仅供参考 package main import ( "fmt" "log" "os" "strconv" " ...
- phtyon
https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014316399410395 ...
- Android 全局使用第三方字体
给APP全局设置字体主要分为两个方面来介绍 一.给原生界面设置第三方字体 1.准备工作-下载第三方字体:传送门 将文件放入工程assets目录下.(一般个人习惯单独命名一个文件夹放字体文件,也可直接放 ...
- 单元测试系列之十:Sonar 常用代码规则整理(二)
摘要:帮助公司部署了一套sonar平台,经过一段时间运行,发现有一些问题出现频率很高,因此有必要将这些问题进行整理总结和分析,避免再次出现类似问题. 作者原创技术文章,转载请注明出处 ======== ...
- xml转json和实体类的两种方式
本文为博主原创,未经允许不得转载: xml在http通信中具有较高的安全性和传输速度,所以应用比较广泛, 在项目中往往需要对xml,json和实体类进行相互转换,在这里总结一下自己所用到的一些方法: ...
- Springboot中Jackson的操作
有一段时间没写博客了,虽然是菜鸟一枚但毕竟总要有东西记录学习的,我相信有志者事竟成.今天在工作中使用Jackson转换了一个javabean,传到测试服上之后发现日期少了一天,使用的是@JsonFor ...
- matlab 入门
---恢复内容开始--- 1.cast表示将元素转化成对应的ASCII值 如cast('hellothere','uint8')输出结果为104 101 108 108 111 116 104 101 ...
- KAFKA跨主机部署网络不通解决思路
Kafka的部署不仅需要集群可用,同时需要对orderer节点可连,这就是为什么有的时候,kafka集群本身没问题,但是orderer却总是报错. 为了试验kafka剥离方案的可行性,跨阿里云网络和内 ...
- Maven安装环境变量配置教程(带图)
Maven安装配置环境变量教程 什么是maven:Maven是一个软件项目管理和综合工具.基于项目对象模型(POM)的概念,Maven可以从一个中心资料片管理项目构建,报告和文件. (简单来说就是,安 ...
- vim 复制粘贴
首先进入块模式 Ctrl+ v 使用按键j/k/h/l进行选中多列 使用按键y进行复制 在insert模式下:使用按键p进行粘贴