我需要使用json body与autentication的soap标头进行交互。
我创建了这样的合同:
[ServiceContract(Namespace = "http://tourico.com/webservices/hotelv3")]
public interface IHotelMobileFlow
{
[OperationContract, WebInvoke(
BodyStyle = WebMessageBodyStyle.Wrapped,
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json)]
SearchResultMobile SearchHotels(SearchRequestMobile request);
这样的服务:
[AuthenticationRequired(typeof(HotelFlow), typeof(DefaultClientAuthenticationHandler))]
public class HotelMobileFlow : IHotelMobileFlow
{
属性'AuthenticationRequired'我需要发送一个soap标题
<soapenv:Header>
<aut:AuthenticationHeader>
<aut:LoginName>host</aut:LoginName>
<aut:Password>password</aut:Password>
<aut:Culture>en_US</aut:Culture>
<aut:Version>8</aut:Version>
</aut:AuthenticationHeader>
</soapenv:Header>
我创建了这样的请求:
HttpWebRequest request = WebRequest.Create(address) as HttpWebRequest;
request.Method = "POST";
request.ContentType = "application/json; charset=utf-8";
SearchRequestMobile sr = new SearchRequestMobile();
是否可以将soap标头添加到json请求中? 还有其他选项如何将标头转移到服务?
谢谢,Michal
答案 0 :(得分:1)
不可以将SOAP标头添加到JSON请求中。服务将无法解析它。您的Web请求定义您要发送JSON。这意味着请求的内容只能是JSON。
理论上,如果您实现自己的消息编码器,您将能够在SOAP主体中发送JSON内容并添加SOAP头,但这种开发的复杂性并不值得。
您必须提供其他方式来验证您的客户端。改为使用自定义HTTP标头。