我有一个使用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 ...知道发生了什么事吗?
答案 0 :(得分:2)
使用WSHttpBinding
要求客户端说SOAP 1.2并且还要理解ws-addressing,ws-reliablemessaging,ws-security,ws-policy和ws-policyassertion。我怀疑SOAP :: Lite能够理解其中的任何内容,因此也就是“精简版”的命名法。 BasicHttpBinding
非常基本,就像SOAP :: Lite一样:)