PHP SoapClient - 使用变量创建请求

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP SoapClient - 使用变量创建请求相关的知识,希望对你有一定的参考价值。

我试图在php中创建一个SOAP请求。我对此非常陌生并且相当挣扎。我正在使用的网络服务将车辆的VIN作为输入,并发回有关该特定车辆的详细信息。输入:1ZVHT88S375260112作为回报,您将收到有关该VIN所属的2007 Ford Mustang的详细信息。

我创建了一个简单的输入栏和表单来输入VIN。这将通过PHP SOAP Request提供给页面。我还用WSDL链接创建了一个SOAP信封。我省略了我的登录凭据(用户名和密码/密码)。

如何在PHP中使用SoapClient获取VIN输入和信封并创建SOAP请求?任何输入或帮助将不胜感激!

简单的html输入/表单:

<!DOCTYPE html>
<html>

<head>
<title>VIN Decoder API Test</title>

<style type="text/css">
input {width: 700px;height:50px;display: block;margin-left: auto;margin-right: auto;margin-top: 200px;font-size:36px;font-family: sans-serif;text-align: center;}
button {display: block;margin-left: auto;margin-right: auto;}
.display1 {display: flex;align-items: center;justify-content: center;}
.button1 {
    background-color: rgba(30, 31, 35);
    border: none;
    color: rgba(215, 214, 219);
    padding: 10px 50px;
    text-align: center;
    text-decoration: none;
    display: inline-block;
    font-size: 28px;
    cursor: pointer;
    font-family: sans-serif;
}
</style>

</head>

<body>

    <form action="request.php" method="post">

    <input type="text" id="VIN" placeholder="Enter VIN" name="VIN" maxlength="100"/>
    <br>
    <div class="display1">
    <button id="submit_btn" class="button1">Submit</button>
    </div>

  </form>

  <br>
  <br>

</body>
</html>

肥皂信封:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:description7b.services.chrome.com">
<soapenv:Header/>
 <soapenv:Body>
  <urn:VehicleDescriptionRequest>
     <urn:accountInfo number="" secret="" country="US" language="en" behalfOf="?"/>
     <urn:vin>$VIN</urn:vin>
  </urn:VehicleDescriptionRequest>
 </soapenv:Body>
</soapenv:Envelope>
答案

如果您的soap信封本身位于一个名为envelope.txt的文件中,您可以在您的php页面中执行此操作:

$soapenv = file_get_contents('/path/to/envelope.txt');
$prepared_envelope = str_replace("$VIN", $VIN, $soapenv);

这会将包络加载到变量中,然后将var替换为var的值。有几种方法可以做到这一点,但这是最容易解释的。

以上是关于PHP SoapClient - 使用变量创建请求的主要内容,如果未能解决你的问题,请参考以下文章

PHP SoapClient 超时

PHP SoapClient参数仅在我使用StdClass时才有效

PHP - SoapClient::SoapClient 无法打开流:连接被拒绝

是否可以将元素名称映射到 php 类(SoapClient)

在发送传出请求之前将新的 SoapClient 绑定到特定的 IP 地址

PHP 中的 SoapClient 错误回退