【问题标题】:SOAP help for PHP-JavaPHP-Java 的 SOAP 帮助
【发布时间】:2014-03-10 10:52:41
【问题描述】:

我们正在努力构建客户可以使用的 Web 服务。当我们在 PHP 中创建客户端程序测试 Web 服务时,它运行良好。但是当客户使用我们的 WSDL 在 Java 中调用服务时,它会得到 500: Internal server error。

注意到,我们在测试时得到的 SOAP 信封与在客户测试时得到的不同。我们的服务器程序日志还显示,在客户测试时 addfunction() 没有被调用。如何解决这个问题。

我们在测试时得到的肥皂信封:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:ns1="http://stage.xyz.com/newcode/"><SOAP-ENV:Body><ns1:updateDelivery><ns1:data>9861164345-98611643451391407829-20140219000000-test one-100003767,9861159602-98611596021391408014-20140219000000-test three-
100003769,9861163442-98611634421391407911-20140219000000-test two-100003768</ns1:data></ns1:updateDelivery></SOAP-ENV:Body></SOAP-ENV:Envelope>

客户测试时收到的肥皂信封:

<?xml version="1.0" encoding="UTF-8"?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"><S:Body><updateDelivery xmlns="http://stage.xyz.com/newcode/"><data>9861164345-98611643451391407829-20140219000000-test one-100003767,9861159602-98611596021391408014-20140219000000-test three-100003769,9861163442-98611634421391407911-20140219000000-test two-100003768</data><hashkey>2604574653</hashkey></updateDelivery></S:Body></S:Envelope>

这些不同的信封会导致内部服务器错误吗?

感谢@Mujahed Syed。我们安装了 SoapUI 并进行了测试。我们注意到,请求包含标头信息以及 SOAP 信封。如果在 SoapUI 中仅将 SOAP 信封作为请求传递,则服务返回结果,否则返回 SoapFault。所以我们收到的请求:

--uuid:6035feb3-d1da-4493-b32b-7146115d0327
Content-Id: <rootpart*6035feb3-d1da-4493-b32b-7146115d0327@example.jaxws.sun.com>
Content-Type: application/xop+xml;charset=utf-8;type="text/xml"
Content-Transfer-Encoding: binary

<?xml version="1.0" encoding="UTF-8"?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"><S:Body><updateDelivery xmlns="http://ourwebsiteurl"><data>9861164345-98611643451391407829-20140219000000-test one-100003767,9861159602-98611596021391408014-20140219000000-test three-100003769,9861163442-98611634421391407911-20140219000000-test two-100003768</data><hashkey>2604574653</hashkey></updateDelivery></S:Body></S:Envelope>
--uuid:6035feb3-d1da-4493-b32b-7146115d0327-- 

这作为请求返回 500 内部错误

<faultcode xsi:type="xsd:string">SOAP-ENV:Client</faultcode>
         <faultactor xsi:type="xsd:string"/>
         <faultstring xsi:type="xsd:string">error in msg parsing:
XML error parsing SOAP payload on line 1: Not well-formed (invalid token)</faultstring>
         <detail xsi:type="xsd:string"/>

如果只有 Soap Envelope 作为对 SoapUI 的请求,它会返回

<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
   <SOAP-ENV:Body>
      <ns1:updateDeliveryResponse xmlns:ns1="http://ourwebsiteurl">
         <return xsi:type="xsd:string">100|2604574653|</return>
      </ns1:updateDeliveryResponse>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

我们可以在 PHP 中接收 SOAP 信封并进行 SoapServer 调用吗?还是我们在调试问题时完全错了。 请提供您的意见。提前致谢。

【问题讨论】:

    标签: java php web-services soap wsdl


    【解决方案1】:

    HTTP 500 错误非常笼统和模糊,您必须进一步调查此问题。您可以尝试以下步骤来调查问题:

    谢谢。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-13
      • 2011-01-10
      • 2010-12-30
      • 2012-06-21
      • 2011-02-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多