java - 将 PHP SoapClient 与 Java JAX-WS RI(Web 服务)结合使用

标签 java php soap web-services jax-ws

对于一个新项目,我们希望使用 JAX-WS RI 在 Java 中构建一个 Web 服务,对于 Web 服务客户端,我们希望使用 PHP。

在有关 JAX-WS RI 的小教程中,我找到了这个示例 Web 服务:

package webservice;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;

@WebService
@SOAPBinding(style = Style.RPC)
public class Calculator {
    public long addValues(int val1, int val2) {
        return val1 + val2;
    }
}

对于网络服务器:

package webservice;

import javax.xml.ws.Endpoint;
import webservice.Calculator;

public class CalculatorServer {
    public static void main(String args[]) {
        Calculator server = new Calculator();
        Endpoint endpoint = Endpoint.publish("http://localhost:8080/calculator", server);
    }
}

启动服务器并使用 URL“http://localhost:8080/calculator?wsdl”浏览 WDSL 效果很好。但是从 PHP 调用 Web 服务失败。

我非常简单的 PHP 调用如下所示:

$client = new SoapClient('http://localhost:8080/calculator?wsdl', array('trace' => 1));
echo 'Sum: '.$client->addValues(4, 5);

但随后我要么收到“ fatal error :超出最大执行时间 60 秒...”,要么收到“未捕获的 SoapFault 异常:[WSDL] SOAP-错误:正在解析 WSDL:无法从 ' http://localhost:8080/calculator?wsdl 加载” ' ...“异常(exception)。

我已经用其他 Web 服务测试了 PHP SoapClient(),它们工作时没有任何问题。 JAX-WS RI 与 PHP 结合使用是否存在已知问题,或者我的 Web 服务中是否存在我未发现的错误?

我找到了this bug report ,但即使更新到 PHP 5.3.2 也没有解决问题。

谁能告诉我该怎么办?顺便说一句,我在 Windows 7 x64 上运行的 Java 版本如下:

java version "1.6.0_17"
Java(TM) SE Runtime Environment (build 1.6.0_17-b04)
Java HotSpot(TM) 64-Bit Server VM (build 14.3-b01, mixed mode)

最佳答案

如果超时,则表明 php 无法正确解析 WSDL URL。您是否在 WSDL Url 上尝试过 file_get_contents()/curl ?也许尝试调用 IP 而不是 localhost,看看效果如何。

关于java - 将 PHP SoapClient 与 Java JAX-WS RI(Web 服务)结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2924713/

相关文章:

php - Gearman - 客户

php - 模拟 CakePHP 的 HttpSocket 类

php - 我在将日期格式化为dd-mm-yyyy时遇到问题

ruby-on-rails - 我的 SOAP 服务的集成/请求 rspec 测试

java - 当我强制关闭应用程序时,SharedPreferences If/Else 语句无法正常工作

java - 如何在我的 GWT 应用程序中使用 OAuth?

java - 我收到一条错误,指出 "address"列不能为空

java - 无法使用sqoop将mysql表导入到hadoop

.net - 使用 Android 调用 .NET Webservice

java - SAXException=XML 文档结构必须在同一实体内开始和结束