using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Text; using System.Web; namespace WMS.Util { public static class WebServiceCall { public static string getsoapresource(string url, string datastr) { try { //Encoding encoding = Encoding.GetEncoding("utf-8"); Encoding encoding = Encoding.GetEncoding("GB2312"); byte[] data = encoding.GetBytes(datastr); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); //发送数据 request.Method = "POST"; request.ContentType = "Content-Type:text/xml;charset=utf-8"; request.ContentLength = data.Length; Stream requestStream = request.GetRequestStream(); requestStream.Write(data, 0, data.Length); requestStream.Close(); //接收返回值 HttpWebResponse res = (HttpWebResponse)request.GetResponse(); StreamReader sReader = new StreamReader(res.GetResponseStream(), System.Text.Encoding.UTF8); string strBack = sReader.ReadToEnd(); //Response.Write(strBack); sReader.Close(); res.Close(); return strBack; } catch (Exception ex) { throw ex; } } //public static string mUrl = "http://localhost:53342/WebService.asmx"; /// /// 调用接口 /// /// 方法名称 /// 参数名称 /// 返回值 public static string callWebService(string mUrl, string methodName, string param) { //Encoding encoding = Encoding.GetEncoding("utf-8"); Encoding encoding = Encoding.GetEncoding("utf-8"); //获取请求数据 byte[] data = getRequestDataALL(methodName, param); // getRequestData(methodName, param); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(mUrl); request.Method = "POST"; request.ContentType = "Content-Type:text/xml;charset=utf-8"; string mSoapAction = "http://tempuri.org/" + methodName; request.Headers.Add("SOAPAction", mSoapAction); request.ContentLength = data.Length; Stream rStream = request.GetRequestStream(); rStream.Write(data, 0, data.Length); rStream.Close(); WebResponse response = request.GetResponse(); Stream dataStream = response.GetResponseStream(); StreamReader reader = new StreamReader(dataStream); string result = reader.ReadToEnd(); dataStream.Close(); response.Close(); return result; } /// /// 获取请求内容(方法1) 适合 .Net /// /// 方法名称 /// 参数 /// public static byte[] getRequestData(string methodName, Dictionary param) { StringBuilder requestData = new StringBuilder("") .Append("") .Append(" ") .Append("<").Append(methodName) .Append(" xmlns=\"http://tempuri.org/\">"); foreach (KeyValuePair item in param) { requestData.Append("<").Append(item.Key).Append(">") .Append(item.Value) .Append(""); } requestData.Append("") .Append("") .Append(""); string val = requestData.ToString(); byte[] data = Encoding.UTF8.GetBytes(val); return data; } /// /// 获取数据(方法2) 兼容所有的(java soap 服务端和.net soap 服务端) /// /// 方法名称 /// 参数 /// public static byte[] getRequestDataALL(string methodName, string param) { StringBuilder requestBuider = new StringBuilder(); requestBuider.Append(" "); //requestBuider.Append("" + // " "); requestBuider.Append(@" urn:services-qad-com:QADERP urn:services-qad-com::QADERP true urn:services-qad-com: "); requestBuider.Append(""); //requestBuider.Append(""); //requestBuider.Append("").Append(param).Append(""); //requestBuider.Append(""); if (methodName == "transferInventory") { #region 转仓 requestBuider.Append(@" QAD domain AFCN QAD scopeTransaction TRUE QAD version eB_2 QAD mnemonicsRaw false QAD username H3C-EDI QAD password H3C-EDI "); requestBuider.Append($"{param}"); #endregion } else { #region 工单 requestBuider.Append(@" QAD domain AFCN QAD scopeTransaction true QAD version eB_2 QAD mnemonicsRaw true QAD username H3C-EDI QAD password H3C-EDI "); requestBuider.Append($"{param}"); #endregion } requestBuider.Append($""); requestBuider.Append(""); string val = requestBuider.ToString(); byte[] data = Encoding.UTF8.GetBytes(val); return data; } } }