java - 结果处理程序出现问题

标签 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");
sleep(30);
echo $output;

$filename = "getListResult";
$filename .= ".xml";
$fp = fopen($filename, 'w');
fwrite($fp, $output);
fclose($fp);

我添加了sleep(30)在将值传递到$output之前给java一个完成的机会但这没有帮助。命令java SOAPClient4XG <a href="http://turbolink.turbo-marketing.net:8180" rel="noreferrer noopener nofollow">http://turbolink.turbo-marketing.net:8180</a> 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 有一定的值(value)后再继续?当我输入 isset($output)有条件我可以看到该变量从未设置。我尝试调用 shell_exec()再次进入条件但我仍然一无所获。

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

最佳答案

我已将 java 文件放入我的服务器环境路径中。另外,使用 /jdk1.6.0_14/bin/java SOAPClient4XG http://...... 创建它的绝对路径也有效。

关于java - 结果处理程序出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6771035/

相关文章:

java - WAR 类访问其他 WAR 中的另一个类

php - href 不适用于表 td,但适用于 ul li

c# - CS0117 - Xamarin 未检测到 'Resources' 文件夹和文件

java - 如何在滚动 Activity 下放置广告 View 横幅?

java - 使用 ANT_OPTS 影响目标 java 应用程序

java - 如何解决javax.servlet.ServletException : java. lang.UnsupportedClassVersionError?

PHP:2 个开关不能很好地相互交互

java - 使用函数隐藏所有相对布局,我们选择的除外

java - 如何使用 Spring api 正确发送 JSON 数组?

php - 递归函数中释放内存的方法?