Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 通行证;布尔数组;致NOAA';s的SOAP服务_Php_Api_Soap_Soap Client_Noaa - Fatal编程技术网

Php 通行证;布尔数组;致NOAA';s的SOAP服务

Php 通行证;布尔数组;致NOAA';s的SOAP服务,php,api,soap,soap-client,noaa,Php,Api,Soap,Soap Client,Noaa,我正试图使用SOAPClient查询NOAA SOAP API以获取一些特定信息。对服务的典型查询如下所示: 又好又容易。然而,看一看最后一个参数。可以使用发送到服务器的布尔数组来打开响应中的特定内容。正确完成后,查询结果如下所示 所以,当然,我会尝试一些像 $client = new SoapClient('http://www.weather.gov/forecasts/xml/DWMLgen/wsdl/ndfdXML.wsdl#NDFDgen'); $result = $client-&g

我正试图使用SOAPClient查询NOAA SOAP API以获取一些特定信息。对服务的典型查询如下所示:

又好又容易。然而,看一看最后一个参数。可以使用发送到服务器的布尔数组来打开响应中的特定内容。正确完成后,查询结果如下所示

所以,当然,我会尝试一些像

$client = new SoapClient('http://www.weather.gov/forecasts/xml/DWMLgen/wsdl/ndfdXML.wsdl#NDFDgen');
$result = $client->NDFDgen(40.7893,-96.6938,'time-series','2007-04-20T00:00','2007-04-21T00:00', array('mint' => 1, 'maxt' => 1));
请注意,我还必须将param 3更改为“time-series”,因为“glance”只是将其返回的内容硬编码(完全忽略第五个参数)。在任何情况下,上述代码都会导致服务器发回空白响应。我在第六个情人身上尝试过各种各样的东西,但都不走运


那么,有什么好主意?如何像预期的那样为API提供一个“布尔数组”?

使用简单的方法在请求中发送XML参数。对于布尔值,可以直接使用“true

$client=新的SoapClient('http://www.weather.gov/forecasts/xml/DWMLgen/wsdl/ndfdXML.wsdl#NDFDgen,数组('trace'=>1));
$param1=新的SoapParam(40.7893,“纬度”);;
$param2=新的SoapParam(-96.6938,“经度”);;
$xmlDocument='glance';
$xmlvar=newsoapvar($xmlDocument,XSD_ANYXML);
$param3=新的SoapParam($xmlvar,“产品”);;
$param4=新的SoapParam(“2011-09-06T00:00”,“开始时间”);;
$param5=新的SoapParam(“2011-09-07T00:00”,“结束时间”);;
$xmlDocument='1
真的
真的
';
$xmlvar=newsoapvar($xmlDocument,XSD_ANYXML);
$param6=新的SoapParam($xmlvar,“weatherParameters”);;
$result=$client->NDFDgen($param1、$param2、$param3、$param4、$param5、$param6);
echo“请求:”.$client->u getLastRequest().“
”; 打印(结果);
如果您查看服务的描述,您将看到最后一个参数是由NOAA描述的复杂数据类型。您可以创建weatherParametersType的实例,然后直接修改其成员。(例如,
wParams.pop12=True

您似乎缺少
\uu getFunctions()
中描述的
unitType$Unit
。您只需为我们将其设置为
'e'
,或为公制读数设置为
'm'
。看起来还需要为所有返回值定义布尔值。。。不仅仅是你想要的。因此,您需要定义

$PARAMS = array('appt' => false,
'conhazo' => false,
'critfireo' => false,
'cumw34' => false,
'cumw50' => false,
'cumw64' => false,
'dew' => false,
'dryfireo' => false,
'iceaccum' => false,
'icons' => false,
'incw34' => false,
'incw50' => false,
'incw64' => false,
'maxrh' => false,
'maxt' => true,
'minrh' => false,
'mint' => true,
'phail' => false,
'pop12' => false,
'prcpabv14d' => false,
'prcpabv30d' => false,
'prcpabv90d' => false,
'prcpblw14d' => false,
'prcpblw30d' => false,
'prcpblw90d' => false,
'precipa_r' => false,
'ptornado' => false,
'ptotsvrtstm' => false,
'ptstmwinds' => false,
'pxhail' => false,
'pxtornado' => false,
'pxtotsvrtstm' => false,
'pxtstmwinds' => false,
'qpf' => false,
'rh' => false,
'rx' => false,
'sky' => false,
'sky_r' => false,
'snow' => false,
'td_r' => false,
'temp' => false,
'temp_r' => false,
'tmpabv14d' => false,
'tmpabv30d' => false,
'tmpabv90d' => false,
'tmpblw14d' => false,
'tmpblw30d' => false,
'tmpblw90d' => false,
'waveh' => false,
'wdir' => false,
'wdir_r' => false,
'wgust' => false,
'wspd' => false,
'wspd_r' => false,
'wwa' => false,
'wx' => false);
然后在声明
unitType
后将其添加到通话中:

$client = new SoapClient('http://www.weather.gov/forecasts/xml/DWMLgen/wsdl/ndfdXML.wsdl');
$result = $client->NDFDgen(40.7893,-96.6938,'time-series',NULL,NULL,'e',$PARAMS);
$PARAMS = array('appt' => false,
'conhazo' => false,
'critfireo' => false,
'cumw34' => false,
'cumw50' => false,
'cumw64' => false,
'dew' => false,
'dryfireo' => false,
'iceaccum' => false,
'icons' => false,
'incw34' => false,
'incw50' => false,
'incw64' => false,
'maxrh' => false,
'maxt' => true,
'minrh' => false,
'mint' => true,
'phail' => false,
'pop12' => false,
'prcpabv14d' => false,
'prcpabv30d' => false,
'prcpabv90d' => false,
'prcpblw14d' => false,
'prcpblw30d' => false,
'prcpblw90d' => false,
'precipa_r' => false,
'ptornado' => false,
'ptotsvrtstm' => false,
'ptstmwinds' => false,
'pxhail' => false,
'pxtornado' => false,
'pxtotsvrtstm' => false,
'pxtstmwinds' => false,
'qpf' => false,
'rh' => false,
'rx' => false,
'sky' => false,
'sky_r' => false,
'snow' => false,
'td_r' => false,
'temp' => false,
'temp_r' => false,
'tmpabv14d' => false,
'tmpabv30d' => false,
'tmpabv90d' => false,
'tmpblw14d' => false,
'tmpblw30d' => false,
'tmpblw90d' => false,
'waveh' => false,
'wdir' => false,
'wdir_r' => false,
'wgust' => false,
'wspd' => false,
'wspd_r' => false,
'wwa' => false,
'wx' => false);
$client = new SoapClient('http://www.weather.gov/forecasts/xml/DWMLgen/wsdl/ndfdXML.wsdl');
$result = $client->NDFDgen(40.7893,-96.6938,'time-series',NULL,NULL,'e',$PARAMS);