我有一个非常简单的PHP脚本,它向webservicex geoipservice发送SOAP请求
WSDL是http://www.webservicex.net/geoipservice.asmx?WSDL
PHP脚本如下:
$wsdl = 'http://www.webservicex.net/geoipservice.asmx?WSDL';
$client = new SoapClient($wsdl, array('trace'=>1));
$response = $client->GetGeoIP('IPAddress','198.252.206.16');
var_dump($response);
print_r(array_values($response));
然而它返回一个空白屏幕。
此处显示了SOAP UI测试,并且工作正常:SOAP UI Test
我确定方法是正确的,我真的看不出有什么问题。你能帮忙吗?
答案 0 :(得分:0)
我强烈建议您使用WSDL到php生成器来确保发送请求的方式。目前我认为数据没有很好地定义为GetGeoIP
等待拥有一个对象或一个数组,并且你给它2个参数而不是一个参数。
您应该尝试PackageGenerator项目。
答案 1 :(得分:0)
它显示一个空白页面,因为soap客户端会抛出异常,您可能将display_errors
PHP设置为0
或error_reporting
的某些生产值。
现在,对于" 为什么会抛出异常?"部分:
您没有为请求发送正确的值。您可以使用__getLastRequest
的{{1}}方法检查您的肥皂请求。
查看wsdl,SoapClient
soap调用需要类型为GetGeoIP
的参数,该参数又包含节点名称IPAddress。您需要使用GetGeoIP
构建它们或创建一个类(或使用wsdl到php生成器)。
以下是您的工作示例:
SoapVar