繁体   English   中英

php soap空输出

[英]php soap empty output

我是一名经验丰富的PHP程序员,但我实际上并不知道SOAP。 现在我必须使用它,因为我的客户需要自动生成DHL批处理标签。 我需要一些简单而有效的帮助。

所以我向DHL发送了一个原始XML请求,我已经从他们的示例程序中复制了该消息,但我总是得到一个空结果(没有错误)。 我的PHP代码如下:

require_once('nusoap/lib/nusoap.php');

$endpoint = "https://test-intraship.dhl.com/intraship.57/jsp/Login_WS.jsp";

$client = new nusoap_client($endpoint, false);

$msg = $client->serializeEnvelope("
<soap:Envelope xmlns:soap=\"http://www.w3.org/2003/05/soap-envelope\"
 xmlns:cis=\"http://dhl.de/webservice/cisbase\" xmlns:de=\"http://de.ws.intraship\">
<soap:Header>
<cis:Authentification><cis:user>bzalewski</cis:user>

(...) 

");

$result=$client->send($msg, $endpoint);

echo $result;

如上所述,消息只是被复制,所以一定是好的。 我尝试了另一个端点: http//test-intraship.dhl.com/ws/1_0/ISService/DE.wsdl ,但也没有结果(没有错误)。

请帮忙。

使用soap_client您不需要传递原始XML 相反,您查看WSDL并确定要调用哪个Web服务函数,以及它需要哪些参数。 然后通过传递wsdl url以及是否要跟踪来创建一个soap客户端对象(它有助于调试和填充)。 然后使用此soap客户端对象来调用要调用的任何Web服务函数。 如果函数调用需要参数,请将它们作为数组传递。 我在下面发布了一个示例代码,该代码使用您提供的WSDL并调用其getVersion函数。 请注意,此函数不需要参数,因此我没有传递任何内容。 希望这有助于您入门..

<?
$client = new SoapClient('http://test-intraship.dhl.com/ws/1_0/ISService/DE.wsdl', array('trace' => 1));
$res = $client->getVersion();
print_r($res); 
?>

这将从DHL Web服务返回以下值:

stdClass Object
(
    [Version] => stdClass Object
        (
            [majorRelease] => 1
            [minorRelease] => 0
            [build] => 14
        )

)

Web服务器是否以状态200响应? 你说你得到一个空洞的回答吧?

使用这个免费的GUI工具(http://webservicestudio.codeplex.com/)进行Web服务调用和可视化。 您可以轻松加载WSDL并开始拨打电话。

顺便说一下,工作2个工作和学习是好东西! 保持。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM