我正在使用php SOAPClient从外部服务器调用数据,并使用soapUI测试并验证了该服务。我的请求似乎正常工作,直到它到达第四个参数,这是一个字符串(前三个是数字)。我的代码和请求如下:
$wdsl = "http://ofmpub.epa.gov/WATERSWebServices/SpatialServices?WSDL";
$client = new SoapClient($wdsl, array(
"trace"=>1,
"exceptions"=>0));
$lat = 46.852783;
$long = -114.004517;
$radius = 1;
$program = '303D';
$values = $client->getEntitiesByLatLong($lat,$long,$radius,$program);
结果请求:
<?xml version="1.0" encoding="utf-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://ofmpub.epa.gov/WATERSWebServices/SpatialServices.wsdl">
<SOAP-ENV:Body>
<ns1:getEntitiesByLatLong>
<latitude>46.852783</latitude>
<longitude>-114.004517</longitude>
<searchRadiusMiles>1</searchRadiusMiles>
<programsList />
</ns1:getEntitiesByLatLong>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
我相信该服务在这里需要一个字符串。我的代码是否有问题?
答案 0 :(得分:0)
如果我没记错的话,你需要将一个数组或对象传递给soap客户端方法调用。 即。
$data = array('latitude' => 46.852783, 'longitude' => -114.004517, ... );
$values = $client->getEntitiesByLatLong($data);
来自数组的键或来自对象的属性被映射到xml节点&amp;相应的价值观。
在soap客户端对象上,您可以获取请求xml&amp;实际上看到通过网络传输的内容(使用getLastRequest())php soap client