You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
111 lines
4.8 KiB
111 lines
4.8 KiB
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Net;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Xml.Linq;
|
|
|
|
namespace ICSSoft.FromERP
|
|
{
|
|
public static class XmlAPIHelper
|
|
{
|
|
private static log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
|
|
|
|
|
|
public static string GetERPUrl()
|
|
{
|
|
return System.Configuration.ConfigurationManager.AppSettings["ERPUrl"];
|
|
}
|
|
|
|
public static string RequestXML(string url, string xmlData)
|
|
{
|
|
log.Debug(url);
|
|
string statusCode = "400";
|
|
string resultContent = "";
|
|
try
|
|
{
|
|
log.Debug(xmlData);
|
|
byte[] bytes = Encoding.UTF8.GetBytes(xmlData);
|
|
|
|
////Basic Auth
|
|
//byte[] byteUser = Encoding.Default.GetBytes(userName + ":" + password);
|
|
//string Authorization = Convert.ToBase64String(byteUser);
|
|
|
|
WebRequest request = HttpWebRequest.Create(url);
|
|
//避免远程连接证书无效问题
|
|
ServicePointManager.ServerCertificateValidationCallback = (s, certificate, chain, errs) => true;
|
|
request.Method = "POST";
|
|
request.Timeout = 300000;
|
|
request.ContentType = "text/xml;charset=UTF-8";
|
|
request.ContentLength = bytes.Length;
|
|
//request.Headers.Add("Authorization", "Basic " + Authorization);
|
|
//根据soapui中的SOAPAction 进行赋值
|
|
request.Headers.Add("SOAPAction", "\"\"");
|
|
Stream requestStream = request.GetRequestStream();
|
|
requestStream.Write(bytes, 0, bytes.Length);
|
|
requestStream.Close();
|
|
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
|
|
statusCode = response.StatusCode.ToString("d");
|
|
Stream responseStream = response.GetResponseStream();
|
|
StreamReader sr = new StreamReader(responseStream, Encoding.UTF8);
|
|
resultContent = sr.ReadToEnd();
|
|
sr.Dispose();
|
|
responseStream.Close();
|
|
//response.Dispose();
|
|
log.Debug(resultContent);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
log.Error(ex.ToString());
|
|
statusCode = "400";
|
|
resultContent = ex.Message;
|
|
//throw ex;
|
|
}
|
|
return resultContent;
|
|
}
|
|
|
|
public static string GetData(string Operation, XElement document)
|
|
{
|
|
string result = string.Empty;
|
|
try
|
|
{
|
|
XNamespace soapenvNamespace = "http://schemas.xmlsoap.org/soap/envelope/";
|
|
XNamespace tipNamespace = "http://www.dsc.com.tw/tiptop/TIPTOPServiceGateWay";
|
|
|
|
XElement root = new XElement(soapenvNamespace + "Envelope",
|
|
new XAttribute(XNamespace.Xmlns + "soapenv", soapenvNamespace),
|
|
new XAttribute(XNamespace.Xmlns + "tip", tipNamespace),
|
|
new XElement(soapenvNamespace + "Header"),
|
|
new XElement(soapenvNamespace + "Body",
|
|
new XElement(tipNamespace + Operation + "Request",
|
|
new XElement(tipNamespace + "request",
|
|
new XElement("Request",
|
|
new XElement("Access",
|
|
new XElement("Authentication", new XAttribute("user", "kc"), new XAttribute("password", "kckckc258")),
|
|
new XElement("Connection", new XAttribute("application", "ERP"), new XAttribute("source", "10.0.0.196")),
|
|
new XElement("Organization", new XAttribute("name", "KC47")),
|
|
new XElement("Locale", new XAttribute("language", "zh_cn"))
|
|
),
|
|
new XElement("RequestContent",
|
|
new XElement("Parameter"),
|
|
document
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
);
|
|
result = root.ToString().Replace("<tip:request>\r\n <Request>", "<tip:request><![CDATA[<Request>")
|
|
.Replace("</Request>\r\n </tip:request>", "</Request>]]></tip:request>");
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
log.Error(ex.ToString());
|
|
throw ex;
|
|
}
|
|
return result;
|
|
}
|
|
}
|
|
}
|