123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191 |
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Net;
- using System.Text;
- using System.Xml;
- using wms.dto.response;
- using wms.util.Ext;
- namespace wms.util.Http
- {
- public class HttpUtil
- {
- public static string ERPWebServerPath = string.Empty;
- #region Get请求
- /// <summary>
- /// Get请求
- /// </summary>
- /// <param name="remoteUrl">接口地址</param>
- /// <param name="timeOut">超时时间</param>
- /// <param name="encode">编码方式</param>
- /// <param name="contentType">内容格式</param>
- public static string GetRequest(string remoteUrl, int timeOut = 30000, string encode = "UTF-8", string contentType = "application/json")
- {
- var result = "";
- try
- {
- var mRequest = (HttpWebRequest)WebRequest.Create(remoteUrl);
- mRequest.Timeout = timeOut;
- mRequest.ContentType = contentType;
- var mResponse = (HttpWebResponse)mRequest.GetResponse();
- Stream responseStream = mResponse.GetResponseStream();
- if (responseStream == null)
- {
- return string.Empty;
- }
- using (System.IO.StreamReader reader = new System.IO.StreamReader(responseStream, Encoding.GetEncoding(encode)))
- {
- result = reader.ReadToEnd();
- }
- responseStream.Close();
- }
- catch (Exception ex)
- {
- throw ex;
- }
- return result;
- }
- #endregion
- #region POST请求
- /// <summary>
- /// 发起HTTP请求
- /// </summary>
- /// <param name="remoteUrl">接口地址</param>
- /// <param name="postData">请求参数</param>
- /// <param name="timeOut">超时时间</param>
- /// <param name="encode">编码方式</param>
- /// <param name="contentType">内容格式</param>
- public static string PostRequest(string remoteUrl, string postData, int timeOut = 30000, string encode = "UTF-8", string contentType = "application/json",string requestid ="",string sourcecode ="",string servicecode = "")
- {
- var result = string.Empty;
- try
- {
- var mRequest = (HttpWebRequest)WebRequest.Create(remoteUrl);
- //相应请求的参数
- byte[] data = Encoding.GetEncoding(encode).GetBytes(postData);
- mRequest.Method = "Post";
- mRequest.ContentType = contentType;
- mRequest.ContentLength = data.Length;
- mRequest.Timeout = timeOut;
- if (!string.IsNullOrEmpty(requestid))
- {
- mRequest.Headers["requestId"] = requestid;
- mRequest.Headers["sourceCode"] = sourcecode;
- mRequest.Headers["serviceCode"] = servicecode;
- }
- //请求流
- Stream requestStream = mRequest.GetRequestStream();
- requestStream.Write(data, 0, data.Length);
- requestStream.Close();
- //响应流
- var mResponse = (HttpWebResponse)mRequest.GetResponse();
-
- var responseStream = mResponse.GetResponseStream();
- Encoding code = Encoding.GetEncoding(encode);
- if (responseStream != null)
- {
- var readStream = new StreamReader(responseStream, code);
- var read = new Char[256];
- int count = readStream.Read(read, 0, 256);
- while (count > 0)
- {
- var str = new String(read, 0, count);
- result = result + str;
- count = readStream.Read(read, 0, 256);
- }
- responseStream.Close();
- }
- if (!string.IsNullOrEmpty(requestid) && mResponse.Headers["esbCode "] != "000000" && string.IsNullOrEmpty(result))
- {
- return new SRes() { ResCode = 500, ResMsg = "esbDesc:" + mResponse.Headers["esbDesc"],Memo1 = "esbCode:"+ mResponse.Headers["esbCode"] }.ToCamelCaseString();
- }
- }
- catch (Exception ex)
- {
- throw ex;
- }
- return result;
- }
- /// <summary>
- /// 通过POST提交方式获取XML数据
- /// </summary>
- /// <param name="postData">请求XML内容</param>
- /// <param name="remoteUrl">请求URL</param>
- /// <returns></returns>
- public static XmlDocument PostRequestXml(string remoteUrl, string postData)
- {
- if (string.IsNullOrEmpty(postData) || string.IsNullOrEmpty(remoteUrl))
- {
- return null;
- }
- string result = PostRequest(remoteUrl, postData, 30000, "UTF-8", "application/x-www-form-urlencoded");
- if (string.IsNullOrEmpty(result))
- {
- var xml = new XmlDocument();
- xml.LoadXml(result);
- return xml;
- }
- return null;
- }
- /// <summary>
- /// 发起HTTP请求
- /// </summary>
- /// <param name="remoteUrl">接口地址</param>
- /// <param name="postData">请求参数</param>
- /// <param name="timeOut">超时时间</param>
- /// <param name="encode">编码方式</param>
- /// <param name="contentType">内容格式</param>
- public static string PostRequestByWebApi(string remoteUrl, string postData, int timeOut = 30000, string encode = "UTF-8", string contentType = "application/json")//application/x-www-form-urlencoded application/json
- {
- var result = string.Empty;
- try
- {
- if (string.IsNullOrEmpty(remoteUrl))
- remoteUrl = ERPWebServerPath;
- var mRequest = (HttpWebRequest)WebRequest.Create(remoteUrl);
- //相应请求的参数
- byte[] data = Encoding.GetEncoding(encode).GetBytes(postData);
- mRequest.MaximumAutomaticRedirections = data.Length;
- mRequest.MaximumResponseHeadersLength = data.Length;
- mRequest.Method = "Post";
- mRequest.ContentType = contentType;
- mRequest.ContentLength = data.Length;
- mRequest.Timeout = timeOut;
- //请求流
- Stream requestStream = mRequest.GetRequestStream();
- requestStream.Write(data, 0, data.Length);
- requestStream.Close();
- //响应流
- var mResponse = (HttpWebResponse)mRequest.GetResponse();
- var responseStream = mResponse.GetResponseStream();
- Encoding code = Encoding.GetEncoding(encode);
- if (responseStream != null)
- {
- var readStream = new StreamReader(responseStream, code);
- var read = new Char[256];
- int count = readStream.Read(read, 0, 256);
- while (count > 0)
- {
- var str = new String(read, 0, count);
- result = result + str;
- count = readStream.Read(read, 0, 256);
- }
- responseStream.Close();
- }
- }
- catch (Exception ex)
- {
- throw ex;
- }
- return result;
- }
- #endregion
- }
- }
|