php - 如何创建 PHP SOAP 请求和响应

标签 php xml soap

我正在使用 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/

相关文章:

java - 使用 Jmeter 从 csv 文件创建包含多个项目(在一个 SOAP/XML 消息中)的 xml 列表

php - 归档 php sql date()

php - 缺货时的 WooCommerce "CONTACT"按钮

xml - 将 Go 结构体转换为字符串

java - 如何在 TestNG 中排除类

web-services - 如何使用 Delphi 构建独立的 SOAP Web 服务?

php - 从 GIT post-update hook 执行 PHP

php - PHP MySQL 问题并插入 UTF-8

.net - 将 C#3 代码表示为 XML 中的抽象语法树

c# - 如何使用 HTTPRequestMessage 添加 SOAP 身份验证 header ?