Java 结果处理程序有问题

Java 结果处理程序有问题,java,php,xml,soap,xml-rpc,Java,Php,Xml,Soap,Xml Rpc,我正在尝试通过PHP运行java客户机,它将XML发送到另一台服务器。接收响应通常需要10-30秒。当我运行PHP时,我可以看出没有加载时间,所以我认为其余的代码在收到响应之前执行。我试图在浏览器中显示返回响应,并将其写入同一目录中的另一个XML。所有这些都不会发生。新XML已创建,但为空 $output = shell_exec("java SOAPClient4XG http://turbolink.turbo-marketing.net:8180 getList.xml"); sle

我正在尝试通过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 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>

0
无误 CVPLUS 消费者视觉增强 94 莫特 按揭热线 206 MRTGBASE 抵押基础 94 超新 美国新搬家者加号 171 采埃布斯 东京证交所业务档案 38

有什么方法可以让我等到$output有一些值之后再继续吗?当我把
设置为($output)
条件时,我可以看到变量从未设置过。我尝试在条件中再次调用
shell\u exec()
,但仍然一无所获


*编辑:服务器有IP限制,因此尝试在您的计算机上运行此代码不会完全相同。但是,您将/应该得到错误响应。

我已将java文件放在我的服务器环境路径中。此外,使用
/jdk1.6.0\u 14/bin/java SOAPClient4XG创建指向它的绝对路径http://......
也很有效。

你是r通过Quercus运行这个?