如何配置soap lite客户端使用wshttpbinding消费WCF服务?

时间:2011-11-30 23:49:06

标签: wcf soap soapui soaplite

我有一个使用wcf服务的soap lite客户端。我在basichttpbinding上测试了一切,它运行正常。当我将绑定切换到wshttpbinding时:

<endpoint binding="wsHttpBinding" bindingConfiguration="customWsBinding"
          contract="LogisticServiceLibrary.ILogisticService" />

并将soap lite版本更改为使用1.2:

$client = SOAP::Lite
        ->proxy($endpoint)
    ->soapversion('1.2');

然后它给了我一个错误,下面是SOAPUI的输出:

  

Wed Nov 30 18:36:14 EST 2011:DEBUG:&gt;&gt; “POST / LogisticService
  HTTP / 1.1 [\ r] [\ n]“Wed Wed 30 18:36:14 EST 2011:DEBUG:&gt;&gt;”TE:
  deflate,gzip; q = 0.3 [\ r] [\ n]“Wed Wed 30 18:36:14 EST 2011:DEBUG:&gt;&gt;
  “连接:TE,关闭[\ r] [\ n]”Wed Wed 30 18:36:14 EST 2011:DEBUG:&gt;&gt;
  “接受:text / xml [\ r] [\ n]”Wed Wed 30 18:36:14 EST 2011:DEBUG:&gt;&gt;
  “接受:multipart / * [\ r] [\ n]”Wed Wed 30 18:36:14 EST 2011:DEBUG:&gt;&gt;
  “接受:申请/肥皂[\ r] [\ n]”Wed Wed 30 18:36:14 EST
  2011:DEBUG产品:&gt;&GT; “User-Agent:SOAP :: Lite / Perl / 0.712 [\ r] [\ n]”11月30日星期三   美国东部时间18:36:14 2011:DEBUG:&gt;&gt; “内容长度:49496 [\ r] [\ n]”11月30日星期三   美国东部时间18:36:14 2011:DEBUG:&gt;&gt; “内容类型:application / soap + xml;
  charset = utf-8 [\ r] [\ n]“Wed Wed 30 18:36:14 EST 2011:DEBUG:&gt;&gt;
  “SOAPAction:http://tempuri.org/ILogisticService/IssueOrder[\r][\n]”
  11月30日星期三18:36:14 EST 2011:DEBUG:&gt;&gt; “主持人:localhost:8008 [\ r] [\ n]”
  11月30日星期三18:36:14 EST 2011:DEBUG:&gt;&gt; “[\ r] [\ n]”11月30日星期三18:36:14
  EST 2011:DEBUG:&gt;&gt; “   的xmlns:namesp1 = “http://namespaces.soaplite.com/perl”
  的xmlns:的xsi = “http://www.w3.org/2001/XMLSchema-instance”
  的xmlns:的soapenc = “http://schemas.xmlsoap.org/soap/encoding/”
  的xmlns:XSD = “http://www.w3.org/2001/XMLSchema”
  皂:的encodingStyle = “http://schemas.xmlsoap.org/soap/encoding/”
  的xmlns:SOAP = “http://schemas.xmlsoap.org/soap/envelope/” &GT;   的xmlns = “http://tempuri.org/” &GT;   xmlns:i =“http://www.w3.org/2001/XMLSchema-instance”xmlns =“”
  的xmlns:一个= “http://schemas.datacontract.org/2004/07/LogisticServiceLibrary”
  11月30日星期三18:36:14 EST 2011:DEBUG:&lt;&lt; “HTTP / 1.1 400坏了   请求[\ r] [\ n]“Wed Wed 30 18:36:14 EST 2011:DEBUG:&lt;&lt;”HTTP / 1.1 400
  错误请求[\ r] [\ n]“Wed Wed 30 18:36:14 EST 2011:DEBUG:&lt;&lt;
  “Content-Length:0 [\ r] [\ n]”Wed Wed 30 18:36:14 EST 2011:DEBUG:&lt;&lt;
  “服务器:Microsoft-HTTPAPI / 1.0 [\ r] [\ n]”Wed Wed 30 18:36:14 EST
  2011:DEBUG:其中;&LT; “日期:2011年11月30日星期三23:36:14 GMT [\ r] [\ n]”11月30日星期三   美国东部时间18:36:14 2011:DEBUG:&lt;&lt; “[\ r] [\ n]”

它说400 Bad Request ...知道发生了什么事吗?

1 个答案:

答案 0 :(得分:2)

使用WSHttpBinding要求客户端说SOAP 1.2并且还要理解ws-addressing,ws-reliablemessaging,ws-security,ws-policy和ws-policyassertion。我怀疑SOAP :: Lite能够理解其中的任何内容,因此也就是“精简版”的命名法。 BasicHttpBinding非常基本,就像SOAP :: Lite一样:)