2012-03-16 126 views
7

我试图得到XML请求:getLastRequest为什么不返回任何东西?

$cgProxy = new SoapClient($WSDL_URL,array('trace' => 1)); 

try { 
     $result = $cgProxy->OrderCreate($cgOrder); 

} catch (SoapFault $exc) { 
     var_dump($exc); 
     echo "Request:\n" . $cgProxy->__getLastRequest(), "\n"; 
     echo "Response:\n" . $cgProxy->__getLastResponse() . "\n"; 
} 

有了这个我从$ EXC转储SOAP服务器错误。但getLastRequest似乎没有返回任何东西。有什么想法吗?

我也试过用htmlspecialchars()和htmlentities()没有成功。 。 。

+0

你有没有解决这个问题?我也有一种情况,我发送一个参数数组,然而__getLastResponse()显示没有参数被传递的空SOAP包装。 – TonyTheJet 2012-08-01 21:41:24

+0

我有同样的问题,没有显示任何内容。我在页面的源代码中找到了响应(通过浏览器上下文菜单打开它)。 – 2014-11-19 14:43:34

回答

11

getLastRequest()

只有当SoapClient的对象被设置为TRUE跟踪选项创建此方法。

$client = new SoapClient("http://myservice/?WSDL",array("trace"=>1)); 

在这种情况下适用于我。

+0

我也有这个问题,我确实有跟踪启用,所以这不能解决问题。 – SublymeRick 2013-10-15 20:46:05

+0

正确的,问题存在于我跟踪设置为true,正如我在我原来的帖子中所示。 – evan 2014-11-19 18:28:32

3

也许是因为浏览器中的XML不能以字符串形式打印。 如果是这样,尝试这样的事情:

echo "REQUEST:\n" . htmlentities($client->__getLastRequest()) . "\n"; 
+0

没有帮助我,但高清值得检查/意识到这是一种可能性。 – johnsnails 2016-12-10 04:58:25

1

我知道这是迟到了,但......

其可能你从来没有真正发出请求。如果PHP无法创建SOAP调用,那么您将无法达到发送XML请求的地步。检查你的错误日志中的PHP SOAP错误。