【问题标题】:PHP SoapServer ampersand is encodedPHP SoapServer & 符号被编码
【发布时间】:2013-03-05 08:47:26
【问题描述】:

我正在使用 PHP 中的 SoapServer 开发 Web 服务。以前,我使用完全相同的技术制作了另一个 Web 服务。我的新项目在同一台服务器上,但在另一个子目录中。 在服务和soapserver 的url 中包含一个版本号。 这是我在 PHP 中创建 SoapServer 的方式:

$server = new SoapServer("https://".DOMAIN."/webservice/index.php?v=1.0.0&wsdl=1");
$server->setClass('SoapHandler');
$server->handle();

整个 PHP 页面在我的示例 Soap Service 中是相同的,当然只是 url 不同。 当我使用soapUI 调用webservice 时,返回以下错误:

SOAP-ERROR: Parsing WSDL: Couldn't load from 'https://myurl.com/webservice/index.php?v=1.0.0&wsdl=1' : failed to load external entity "https://myurl.com/webservice/index.php?v=1.0.0&wsdl=1"

如您所见,与号被替换为&。我尝试将编码更改为UTF-8,这也不起作用。

谁能帮帮我?

【问题讨论】:

    标签: php soap soapserver


    【解决方案1】:

    您必须在 php.ini 文件中启用您的 openssl 模块。否则您将无法使用 SSL (https) 访问域。

    否则,您应该从本地服务器检查您的域,并使用 curl 或 lynx 检查 WSDL 文件的返回。

    【讨论】:

    • 另一个网络服务在同一个域上(因此也是网络服务器),而且那个确实可以工作。所以我想我的网络服务器设置没问题?
    • 你可以用phpinfo查看。 Apache 中的 SSL 与 php openssl 不同,对不起,我已经更新了我的答案。您必须在 php.ini 文件中启用您的 openssl。
    • SSL 已启用,我使用 phpinfo 进行了检查。但是在 de php.ini 中为整个服务器设置了 SSL,并且同一台服务器上的其他 Soap 服务确实可以工作..
    • 我昨天遇到了同样的问题。当您从本地服务器访问 WSDL url 时,您应该检查是否获得了正确的 WSDL 文件。
    • WSDL 似乎是正确的,因为如果我在浏览器中查看,我可以看到 WSDL 文件。 Visual Studio 中的验证器也没有显示任何错误..
    【解决方案2】:

    我们有一个 .htaccess,只允许我的 IP 地址,而它也应该允许服务器的 IP。删除它可以解决问题。感谢您的帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多