在 XML 中获取 SOAP 请求和响应
本文关键字:请求 求和 响应 SOAP 获取 XML | 更新日期: 2023-09-27 18:34:47
我们正在与 UPS 货件 API 合作,我们面临着某些问题。在联系 UPS 技术支持后,他们要求向他们提供 xml 格式的 SOAP 信封(请求/回复(。
请协助如何从代码中获取。以下是对 UPS API 的服务调用。
ShipmentResponse shipmentReponse =
shipService.ProcessShipment(shipmentRequest);
任何帮助表示赞赏。
如果要
从程序本身执行此操作,可以添加终结点行为(假设使用的是 WCF(来保存 SOAP 请求和响应。
用法是这样的,
using (ChannelFactory<IService> scf = new ChannelFactory<IService>(new BasicHttpBinding(), "http://localhost:8000/Soap"))
{
scf.Endpoint.EndpointBehaviors.Add(new SimpleEndpointBehavior()); // key bit
IService channel = scf.CreateChannel();
string s;
s = channel.EchoWithGet("Hello, world");
Console.WriteLine(" Output: {0}", s);
}
这里在这里详细描述了它:http://msdn.microsoft.com/en-us/library/ms733786%28v=vs.110%29.aspx,您的关键方法是AfterReceiveReply
和BeforeSendRequest
,您可以根据需要在其中存储或保存 SOAP xml。
// Client message inspector
public class SimpleMessageInspector : IClientMessageInspector
{
public void AfterReceiveReply(ref System.ServiceModel.Channels.Message reply, object correlationState)
{
// log response xml
File.WriteAllText(@"c:'temp'responseXml.xml", reply.ToString());
}
public object BeforeSendRequest(ref System.ServiceModel.Channels.Message request, IClientChannel channel)
{
// log request xml
File.WriteAllText(@"c:'temp'requestXml.xml", request.ToString());
return null;
}
}
public class SimpleEndpointBehavior : IEndpointBehavior
{
public void AddBindingParameters(ServiceEndpoint endpoint, System.ServiceModel.Channels.BindingParameterCollection bindingParameters)
{
// No implementation necessary
}
public void ApplyClientBehavior(ServiceEndpoint endpoint, ClientRuntime clientRuntime)
{
clientRuntime.MessageInspectors.Add(new SimpleMessageInspector());
}
public void ApplyDispatchBehavior(ServiceEndpoint endpoint, EndpointDispatcher endpointDispatcher)
{
// No implementation necessary
}
public void Validate(ServiceEndpoint endpoint)
{
// No implementation necessary
}
}