我已经尝试了几个小时来向我的Soap Client(SoapUI)发出请求,阅读文档或回收代码(是的,对不起),但我无法发出简单的请求。
我想做的很简单:
- 用户插入CustomerId和邮件
- CustomerId会转到我的HomeController
- HomeController向Soap客户端发出请求
- 用户收到包含更多信息的邮件PDF文件。
就这样了
一些代码:
//Receive parameters from Html
[HttpPost]
public ActionResult ConexionWS(string customerId, string mail)
//Connect to client with the authentication
SoapClient client = new SoapClient(binding, wsdl);
client.ClientCredentials.UserName.UserName = userN;
client.ClientCredentials.UserName.Password = _pasw;
client.Open();
XmlDocument soapEnvelopeXml = GetSoapString(customerId);
HttpWebRequest webRequest = CreateWebRequest(address, _action);
InsertSoapEnvelopeIntoWebRequest(soapEnvelopeXml, webRequest);
private static HttpWebRequest CreateWebRequest(string url, string action)
{
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);
webRequest.Headers.Add("SOAPAction", action);
webRequest.ContentType = "text/xml;charset=\"utf-8\"";
webRequest.Accept = "text/xml";
webRequest.Method = "POST";
return webRequest;
}
private static void InsertSoapEnvelopeIntoWebRequest(XmlDocument soapEnvelopeXml, HttpWebRequest webRequest)
{
using (Stream stream = webRequest.GetRequestStream())
{
soapEnvelopeXml.Save(stream);
}
}
发送CustomerId的XML:
private static XmlDocument GetSoapString(string customerId){
<urn:ZWsCustomerInvoiceGetList>
<Customerid>"+customerId+"</Customerid>
<Pedido1></Pedido1>
<Pedido2></Pedido2>
<TFacturaMat>
<item>
<Food></Food>
<Drink></Drink>
<Souvenir></Souvenir>
</item>
</TFacturaMat>
</urn:ZWsCustomerInvoiceGetList>}
我期望的XML:
<urn:ZWsCustomerInvoiceGetList>
<Customerid>"+customerId+"</Customerid>
<Pedido1></Pedido1>
<Pedido2></Pedido2>
<rests>
<item>
<Food>Meal</Food>
<Drink>Water</Drink>
<Souvenir>Nothing</Souvenir>
</item>
</rests>
</urn:ZWsCustomerInvoiceGetList>
我的问题:
- 我不明白CreateWebRequest中的“action”参数是什么
- System.Xml.XmlException:“http”是意外的标记。标记应为""或“”。GetSoapString中的第1行,位置33。“
- 我不知道如何使用Visual Studio在Reference.cs中提供的引用。
我很抱歉这么长的文字。我不知道如何做到这一点。这是我的第一个Web服务,这似乎是不可能的。
1条答案
按热度按时间41zrol4v1#
SOAPAction是终结点URL。
就像这样: