当前位置: 首页 > 知识库问答 >
问题:

如何创建PHP SOAP请求和响应

景温书
2023-03-14

我正在使用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-ERROR:解析WSDL:无法从'POST /vehicles/vehicle.asmxHTTP/1.1 Host:webservice.nada.comContent-Type: text/xml; charset=utf-8 Content-Llong: long SOAPAction:"http://webservice.nada.com/vehicles/vehicle.asmx?wsdl"5YFBURHE3FP331896 1 100':加载外部实体失败"POST /vehicles/vehicle.asmxHTTP/1.1 Host:webservice.nada.comContent-Type: text/xml; charset=utf-8 Content-Llong: long SOAPAction:"http://webservice.nada.com/vehicles/vehicle.asmx?wsdl"

共有1个答案

鄂育
2023-03-14

像这样的东西应该可以帮助你开始。我对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));
 类似资料:
  • 在我的views.py中,我有一个函数,它每次使用不同的响应来调用各种requests.get() 在我的测试类中,我想做这样的事情,但无法计算出确切的方法调用 步骤1: 验证响应包含“a response”、“b response”、“c response” 如何完成步骤1(模拟请求模块)?

  • 我已经开发了一个Java web应用程序,我想实现SAML。我认为这些是实现SAML的正确步骤。 服务提供商(SP,在本例中是我的应用程序)向IdP发送SAML身份验证请求 然后,IdP对其进行验证,创建SAML响应断言,并将其与证书一起签名,然后发送回SP。 然后,SP使用密钥库中证书的公钥对其进行验证,并在此基础上进一步进行 我有一个示例代码,可以创建SAML请求 我可以对其进行编码并发送给I

  • 我使用的是弹性6.3.2中的IndexRequest。现在我更改为版本7.6.2。如何使用CreateIndexRequest执行以下相同的步骤? 弹性Rest高级客户端6.3.2代码: 切换到7.6.2后,我无法在CreateIndexRequest中创建类型、id和源。

  • 我使用Sonar-Cube5.2和Sonar-Runner-2.4。我已经配置了一个bitbucket(使用mibexsoftware/sonar-bitbucket-plugin)repo,并在我的本地git repo目录中设置了这个属性:sonar.bitbucket.minseverity=info。 我可以运行分析,我确实看到了一个Pull Request注释,但注释是通用的:“sonar

  • HTTP请求和HTTP响应在任何Web应用程序中都发挥着重要作用。 我们需要获取http请求的完整详细信息以便正确处理它。 处理完毕后,我们需要通过http响应将处理后的数据发送给客户端。 FuelPHP提供了出色的Request和Response类,分别用于读写HTTP请求和HTTP响应。 让我们在本章中了解Request和Response类。 Request 在典型的Web应用程序中,应用程序

  • 我在改型API中找不到记录完整请求/响应体的相关方法。我希望在探查器中得到一些帮助(但它只提供关于响应的元数据)。我尝试在构建器中设置日志级别,但这也没有帮助: 编辑:此代码正在工作。我不知道为什么它在早些时候不起作用。可能是因为我用的是旧版本的改装。