java 调用c web api_java调用c#webapi的接口实现文件上传

[HttpPost]

public async Task Test()

{

string result = "";

string url = "";

List listStream = new List();

List listContentByte = new List();

List listFileName = new List();

string methodsName = System.Web.HttpContext.Current.Request.Form["methodsName"];

string serverPath = System.Web.HttpContext.Current.Request.Form["serverPath"];

string ArtifactsNum = System.Web.HttpContext.Current.Request.Form["ArtifactsNum"];

string userName = System.Web.HttpContext.Current.Request.Form["userName"];

string guidStr = System.Web.HttpContext.Current.Request.Form["guidStr"];

string routeUrl = System.Web.HttpContext.Current.Request.Form["routeUrl"];

string routeUrl1 = System.Web.HttpUtility.UrlDecode(HttpContext.Current.Request["routeUrl"]);

//Encoding myEncoding = Encoding.GetEncoding("UTF-8");  //gb2312

FilesType filesType = FilesType.General;

HttpFileCollection Files = HttpContext.Current.Request.Files;

string[] allkeys = Files.AllKeys;

for(int i=0;i< allkeys.Length;i++)

{

string filekey = allkeys[i];

string name = Unicode2String(filekey);

string [] namearr= name.Split(new char[] { '\\' }, StringSplitOptions.RemoveEmptyEntries);

string filename = string.Join("", namearr);

listFileName.Add(filename);

}

//接收传递过来的数据流

Stream stream = System.Web.HttpContext.Current.Request.InputStream;

StreamReader reader = new StreamReader(stream);

string xml = " ";

StringBuilder strXML = new StringBuilder();

string[] heads = HttpContext.Current.Request.Headers.AllKeys;

string headvalues = HttpContext.Current.Request.Headers.ToString();

while (reader.Peek() >= 0)

{

string line = reader.ReadLine().Trim();//直接读取一行

if (line == null) return null;

if (line == String.Empty) continue;

if (line.StartsWith("

{

xml = line.Trim();

strXML.Append(xml);

}

}

String xmlData = reader.ReadToEnd();

byte[] bytes = System.Text.Encoding.UTF8.GetBytes(strXML.ToString());

listContentByte.Add(bytes);

using (HttpClient client = new HttpClient())

{

Dictionary DicData = new Dictionary();

DicData.Add("MethodName", methodsName);

DicData.Add("ServerPath", serverPath);

DicData.Add("ArtifactsNum", ArtifactsNum.ToString());

DicData.Add("SendTime", DateTime.Now.ToString());

DicData.Add("UserName", userName);

DicData.Add("FileType", filesType.ToString());

DicData.Add("FileGuid", guidStr);

client.MaxResponseContentBufferSize = 2147483647;

client.Timeout = TimeSpan.FromMinutes(30);

MediaTypeWithQualityHeaderValue temp = new MediaTypeWithQualityHeaderValue("application/json") { CharSet = "utf-8" };

client.DefaultRequestHeaders.Accept.Add(temp);//设定要响应的数据格式

using (var content = new MultipartFormDataContent())//表明是通过multipart/form-data的方式上传数据

{

var formDatas = this.GetFormDataByteArrayContent(this.GetNameValueCollection(DicData));//获取键值集合对应

var files = this.GetFileByteArray(listContentByte, listFileName);//获取文件集合对应的ByteArrayContent集合

Action> act = (dataContents) =>

{//声明一个委托,该委托的作用就是将ByteArrayContent集合加入到MultipartFormDataContent中

foreach (var byteArrayContent in dataContents)

{

content.Add(byteArrayContent);

}

};

act(formDatas);

act(files);//执行act

try

{

url = string.Format(routeUrl + "api/Trading/Files/UploadOptimizeFile");

var returnResult = client.PostAsync(url, content).Result;//post请求

if (returnResult.StatusCode == HttpStatusCode.OK)

result = returnResult.Content.ReadAsAsync().Result;

else

result = "30|客户端连接路由端出错,错误代码:" + returnResult.StatusCode.ToString();

}

catch (Exception ex)

{

result = "29|客户端连接超时";

}

}

}

return Ok(result);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值