【发布时间】:2011-02-05 12:43:18
【问题描述】:
我在调用从 PHP 设置的 Web 服务时遇到问题。下面错误消息中的混淆地址http://XXX.XXX.XXX.XXX/test.asmx?wsdl 返回一个有效的WSDL。我已成功尝试使用 VB.net 客户端将其作为 Web 服务调用,但是当我在 Debian 上从 PHP 调用它时,我收到以下消息:
可能是什么问题?我在下面包含了 Web 服务和 PHP 客户端的代码。
网络服务:
Imports System.Web.Services
Imports System.Web.Services.Protocols
Imports System.ComponentModel
...
' To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
' <System.Web.Script.Services.ScriptService()> _
<System.Web.Services.WebService(Namespace:="http://tempuri.org/")> _
<System.Web.Services.WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<ToolboxItem(False)> _
Public Class WebService1
Inherits System.Web.Services.WebService
<WebMethod()> _
Public Function HelloWorld() As String
Return "Hello World"
End Function
End Class
PHP 客户端:
require_once($_SERVER['DOCUMENT_ROOT']."/catalog/fomeus/includes/soap/nusoap.php");
$objClient = new soapclient("http://XXX.XXX.XXX.XXX/test.asmx?wsdl",
array('trace' => 1, 'exception' => 0, 'cache_wsdl' => 0));
print_r($objClient -> HelloWorld());
如果有帮助的话,我正在使用 PHP 5.2.6 版。我一直在浏览不同论坛的大量帖子,试图找出问题所在。很多人都遇到过同样的问题,但到目前为止我找到的解决方案都没有对我有用。任何帮助将不胜感激。
【问题讨论】:
-
我不知道这可能是什么,但是,您有没有可能尝试 nuSOAP?
-
尝试在您创建 SoapClient 对象的行周围包裹一个 try..catch 块。不要忘记 catch 应该是针对 SoapFault 的一种类型 - 即 catch (SoapFault $e){} 而不是 catch (Exception $e) {} 在 catch 内,查询异常字段(getMessage 等)或 var_dump 异常,然后发布它告诉你的内容。
-
哪里写的是“例外”,不应该是“例外”吗?
标签: php web-services soap