我试图通过PHP运行一个java客户端,它将XML发送到另一台服务器。通常需要大约10到30秒才能收到响应。当我运行PHP时,我可以判断没有加载时间所以我认为其余代码在收到响应之前执行。我试图在浏览器中显示返回响应,并将其写入同一目录中的另一个XML。这些都不会发生。新的XML已创建,但为空。
$output = shell_exec("java SOAPClient4XG http://turbolink.turbo-marketing.net:8180 getList.xml");
sleep(30);
echo $output;
$filename = "getListResult";
$filename .= ".xml";
$fp = fopen($filename, 'w');
fwrite($fp, $output);
fclose($fp);
我添加了sleep(30)
让java有机会在将值传递给$output
之前完成,但它没有帮助。命令java SOAPClient4XG http://turbolink.turbo-marketing.net:8180 getList.xml"
有效。我已经在SOAP UI中使用它,并通过在目录中运行它来通过PUTTY。我收到的输出是XML / SOAP格式:
<?xml version="1.0" encoding="utf-8" ?>
<env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<env:Body>
<n1:getListsResponse xmlns:n1="urn:Turbolink"
env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<getListsResult xsi:type="n1:getListsResult">
<responseMessages n2:arrayType="n1:responseMessage[1]"
xmlns:n2="http://schemas.xmlsoap.org/soap/encoding/"
xsi:type="n2:Array">
<responseMessage>
<code xsi:type="xsd:string">0</code>
<message xsi:type="xsd:string">No Error</message>
</responseMessage>
</responseMessages>
<dataLists xmlns:n3="http://schemas.xmlsoap.org/soap/encoding/"
xsi:type="n3:Array"
n3:arrayType="n1:dataList[5]">
<dataList>
<listID xsi:type="xsd:string">CVPLUS </listID>
<listDescription xsi:type="xsd:string">ConsumerVision Plus</listDescription>
<listVersion xsi:type="xsd:integer">94</listVersion>
</dataList>
<dataList>
<listID xsi:type="xsd:string">MORTHOT </listID>
<listDescription xsi:type="xsd:string">Mortgage Hotlines</listDescription>
<listVersion xsi:type="xsd:integer">206</listVersion>
</dataList>
<dataList>
<listID xsi:type="xsd:string">MRTGBASE</listID>
<listDescription xsi:type="xsd:string">Mortgage Base</listDescription>
<listVersion xsi:type="xsd:integer">94</listVersion>
</dataList>
<dataList>
<listID xsi:type="xsd:string">SUPERNEW</listID>
<listDescription xsi:type="xsd:string">American New Movers Plus</listDescription>
<listVersion xsi:type="xsd:integer">171</listVersion>
</dataList>
<dataList>
<listID xsi:type="xsd:string">TSEBUS </listID>
<listDescription xsi:type="xsd:string">TSE Business File</listDescription>
<listVersion xsi:type="xsd:integer">38</listVersion>
</dataList>
</dataLists>
</getListsResult>
</n1:getListsResponse>
有没有办法我可以等到$ output有一些价值才能继续前进?当我放置isset($output)
条件时,我可以看到变量从未设置。我尝试在条件内再次调用shell_exec()
,但我仍然一无所获。
*编辑:服务器有IP限制,因此尝试在您的计算机上运行此代码将无法完全相同。你会/应该得到一个错误回复。
答案 0 :(得分:0)
我把java文件放在我的服务器env路径中。此外,使用/jdk1.6.0_14/bin/java SOAPClient4XG http://......
创建绝对路径也可以。