using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Xml;
namespace ConsoleApp9
{
class Program
{
static void Main(string[] args)
{
string fileName = @"D:\Project\需求\标牌\D2102270011.xml";
/*
<CertificateData sTestGuid="1e6c79e0-b70f-44a6-8922-03bcd1ff9a20" dtTest="2022/05/19" bLRib="FALSE" bRebendTest="TRUE" bBendTest="FALSE" dElongationAGT="8.7" dElongationAS="" dRatio="1.17" dTensileStrength="655" dYieldStrength="560" dMassPerMeter="0" dArea="" lTestLineNumber="1" dCarbocEquiv="0.3340" dChemCompSn="0.0010" dChemCompAl="0.0020" dChemCompB="0.0010" dChemCompN="0.0038" dChemCompNb="0.0020" dChemCompV="0.0030" dChemCompCu="0.0140" dChemCompNi="0.0020" dChemCompMo="0.0010" dChemCompCr="0.3550" dChemCompS="0.0260" dChemCompP="0.0220" dChemCompMn="0.4820" dChemCompSi="0.2670" dChemCompC="0.1810" sSteelProcess="BOF / Concast / Hot Rolling" lLength="3500" dDiam="0" lFinishing="D2102270011" lFormat="D2102270011" lStandard="D2102270011" sProductDescription="" sDigitalRecordGUID="069033514789415CA19942102C052639" sCastNumber="D2102270011" sCertificateNumber="" lRollingMill="D2102270011" />
*/
string xmlContent = File.ReadAllText(fileName);
var methodName = "ProcessRequest";
string url = "https://api.cares.cloud/SoapServices/ProcessRequestService.asmx?WSDL";
var resquest = new Request();
var response = resquest.GetUrlResponse(url);
StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
XmlDocument doc1 = new XmlDocument();
doc1.LoadXml(sr.ReadToEnd());
sr.Close();
response.Close();
var XmlNs = doc1.SelectSingleNode("//@targetNamespace").Value;
//Console.WriteLine(XmlNs);
XmlDocument doc = new XmlDocument();
String s1 = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope\""+
" xmlns:crs=\""+XmlNs+"\" >" +
"</soapenv:Envelope>";
//Console.WriteLine(s1);
doc.LoadXml(
s1
);
XmlDeclaration decl = doc.CreateXmlDeclaration("1.0", "utf-8", null);
doc.InsertBefore(decl, doc.DocumentElement);
XmlNode soapHeader = doc.CreateElement("soapenv", "Header", doc.DocumentElement.NamespaceURI);
XmlNode soapHeader_1 = doc.CreateElement("crs", "TokenHeader", doc.DocumentElement.NamespaceURI);
XmlNode soapHeader_2 = doc.CreateElement("crs", "Token", doc.DocumentElement.NamespaceURI);
soapHeader_2.InnerText = "6944AA00937523D9FA2911CAFE8F401916C17FA849BDC1702C5EBF1DA637178BF446DAD7F5582D12ABE4B1484F81F11E745C3C55342EC408488282A80E76A8EA";
soapHeader_1.AppendChild(soapHeader_2);
soapHeader.AppendChild(soapHeader_1);
doc.DocumentElement.AppendChild(soapHeader);
XmlElement soapBody = doc.CreateElement("soapenv",
"Body", doc.DocumentElement.NamespaceURI);
XmlElement soapMethod = doc.CreateElement("crs", methodName, doc.DocumentElement.NamespaceURI);
XmlElement certificatesData = doc.CreateElement("crs", "CertificatesData", doc.DocumentElement.NamespaceURI);
certificatesData.InnerXml = xmlContent;
soapMethod.AppendChild(certificatesData);
soapBody.AppendChild(soapMethod);
doc.DocumentElement.AppendChild(soapBody);
Console.WriteLine(doc.OuterXml);
File.WriteAllText("request.xml", doc.OuterXml);
byte[] data = Encoding.UTF8.GetBytes(doc.OuterXml);
var reqProcess = new Request().Process(url, data);
Console.WriteLine(reqProcess);
}
}
public class Request
{
private bool CheckValidationResult(object sender,
X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
{
return true;// Always accept
}
public string Process(string url,byte[] data)
{
HttpWebResponse resp = null;
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;
var request = WebRequest.Create(url) as HttpWebRequest;
request.Method = "POST";
request.ContentType = "text/xml; charset=utf-8";
request.ContentLength = data.Length;
Stream writer = request.GetRequestStream();
writer.Write(data, 0, data.Length);
writer.Close();
using (resp = (HttpWebResponse)request.GetResponse())
{
using (StreamReader sr_b = new StreamReader(request.GetResponse().GetResponseStream(), Encoding.UTF8))
{
return sr_b.ReadToEnd();
}
}
}
public HttpWebResponse GetUrlResponse(string url)
{
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;
var request = WebRequest.Create(url) as HttpWebRequest;
HttpWebResponse resp = (HttpWebResponse)request.GetResponse();
return resp;
}
}
}