我正在使用 API,我是 PHP SOAP 的新手。我正在尝试创建一个请求以获取车辆值,并希望获得响应值。
以下是一个示例 SOAP 1.1 请求。显示的占位符需要替换为实际值。
POST /vehicles/vehicle.asmx HTTP/1.1
Host: webservice.nada.com
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://webservice.nada.com/getDefaultVehicleAndValueByVin"
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<getDefaultVehicleAndValueByVin xmlns="http://webservice.nada.com/">
<vehicleRequest>
<Vin>string</Vin>
<Region>int</Region>
<Mileage>int</Mileage>
</vehicleRequest>
</getDefaultVehicleAndValueByVin>
这是 SOAP 客户端 URL 调用 -
$clientV = new soapclient('http://webservice.nada.com/vehicles/vehicle.asmx?wsdl',array(
// Stuff for development. 'trace' => 1,'exceptions' => 1, 'cache_wsdl' => 0));
这是我尝试过但没有结果的方法 -
$clientV = new soapclient('http://webservice.nada.com/vehicles/vehicle.asmx?wsdl',array(// Stuff for development. 'trace' => 1,'exceptions' => 1, 'cache_wsdl' => 0));
$params = new \SoapVar("<vehicleRequest><Vin>5YFBURHE3FP331896</Vin><Region>10</Region><Mileage>100000</Mileage></vehicleRequest>", XSD_ANYXML);
$result = $client->Echo($params);
我尝试了另一种方法,但在解析 WSDL 时出错
$wsdl = '
POST /vehicles/vehicle.asmx HTTP/1.1
Host: webservice.nada.com
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://webservice.nada.com/getDefaultVehicleAndValueByVin"
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<getDefaultVehicleAndValueByVin xmlns="http://webservice.nada.com/">
<vehicleRequest>
<Vin>5YFBURHE3FP331896</Vin>
<Region>1</Region>
<Mileage>100</Mileage>
</vehicleRequest>
</getDefaultVehicleAndValueByVin>
</soap:Body>
</soap:Envelope>
';
try {
$clientC = @new SOAPClient($wsdl); for $wsdl
$response = $clientC->getDefaultVehicleAndValueByVin(array('key' => 'val'));
} catch (Exception $e) {
echo $e->getMessage();
}
die(var_dump($response));
这是我得到的错误 -
SOAP 错误:解析 WSDL:无法从“POST/vehicles/vehicle.asmx HTTP/1.1 主机加载:webservice.nada.com 内容类型:text/xml; charset=utf-8 Content-Length: length SOAPAction: "http://webservice.nada.com/vehicles/vehicle.asmx?wsdl "5YFBURHE3FP331896 1 100 ': 加载外部实体失败 "POST/vehicles/vehicle.asmx HTTP/1.1 Host: webservice.nada.com Content-Type: text/xml;字符集=utf-8 内容长度:长度 SOAPAction:“http://webservice.nada.com/vehicles/vehicle.asmx?wsdl "
最佳答案
类似这样的内容应该可以帮助您入门。我不是 100% 熟悉 NADA API,所以我不知道某些参数的有效值是什么……您必须填写正确的值(例如,对于 Token、Period、VehicleType 和 Region) .
$clientV = new SoapClient('http://webservice.nada.com/vehicles/vehicle.asmx?wsdl',array('trace' => 1,'exceptions' => 1, 'cache_wsdl' => 0));
$params = new stdClass();
$params->Token = '';
$params->Period = 1;
$params->VehicleType = '';
$params->Vin = '5YFBURHE3FP331896';
$params->Region = 1;
$params->Mileage = 100;
$result = $clientV->getDefaultVehicleAndValueByVin(array('vehicleRequest' => $params));
关于php - 如何创建 PHP SOAP 请求和响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55348220/