2015-03-31 90 views
1

我正在嘗試將用於汽車註冊在線查詢功能的SOAP/HTTP POST/XML API集成到我的網站中,我還沒有想到如何在PHP文件中插入此腳本,所有時間都會出錯。在PHP中集成SOAP API

腳本

SOAP 1.1 
 

 
The following is a sample SOAP 1.1 request and response. The placeholders shown need to be replaced with actual values. 
 

 
POST /api/reg.asmx HTTP/1.1 
 
Host: www.regcheck.org.uk 
 
Content-Type: text/xml; charset=utf-8 
 
Content-Length: length 
 
SOAPAction: "http://tempuri.org/Check" 
 

 
<?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> 
 
    <Check xmlns="http://tempuri.org/"> 
 
     <RegistrationNumber>string</RegistrationNumber> 
 
     <username>string</username> 
 
    </Check> 
 
    </soap:Body> 
 
</soap:Envelope> 
 
HTTP/1.1 200 OK 
 
Content-Type: text/xml; charset=utf-8 
 
Content-Length: length 
 

 
<?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> 
 
    <CheckResponse xmlns="http://tempuri.org/"> 
 
     <CheckResult> 
 
     <vehicleJson>string</vehicleJson> 
 
     <vehicleXml>string</vehicleXml> 
 
     <numberOfSeats>string</numberOfSeats> 
 
     <carValue>string</carValue> 
 
     <immobiliser>string</immobiliser> 
 
     <vehicleData> 
 
      <ABICode type="NCName" /> 
 
      <Description type="NCName" /> 
 
      <RegistrationYear type="NCName" /> 
 
      <ManufactureYearFrom type="NCName" /> 
 
      <ManufactureYearTo type="NCName" /> 
 
      <CarMake type="NCName"> 
 
      <CurrentValue xsi:nil="true" /> 
 
      <CurrentTextValue xsi:nil="true" /> 
 
      </CarMake> 
 
      <CarModel type="NCName" /> 
 
      <BodyStyle type="NCName"> 
 
      <CurrentValue xsi:nil="true" /> 
 
      <CurrentTextValue xsi:nil="true" /> 
 
      </BodyStyle> 
 
      <EngineSize type="NCName"> 
 
      <CurrentValue xsi:nil="true" /> 
 
      <CurrentTextValue xsi:nil="true" /> 
 
      </EngineSize> 
 
      <NumberOfDoors type="NCName"> 
 
      <CurrentValue xsi:nil="true" /> 
 
      <CurrentTextValue xsi:nil="true" /> 
 
      </NumberOfDoors> 
 
      <Transmission type="NCName"> 
 
      <CurrentValue xsi:nil="true" /> 
 
      <CurrentTextValue xsi:nil="true" /> 
 
      </Transmission> 
 
      <FuelType type="NCName"> 
 
      <CurrentValue xsi:nil="true" /> 
 
      <CurrentTextValue xsi:nil="true" /> 
 
      </FuelType> 
 
      <MakeDescription type="NCName" /> 
 
      <ModelDescription type="NCName" /> 
 
      <Immobiliser type="NCName"> 
 
      <CurrentValue xsi:nil="true" /> 
 
      <CurrentTextValue xsi:nil="true" /> 
 
      </Immobiliser> 
 
      <NumberOfSeats type="NCName"> 
 
      <CurrentValue xsi:nil="true" /> 
 
      <CurrentTextValue xsi:nil="true" /> 
 
      </NumberOfSeats> 
 
      <IndicativeValue type="NCName" /> 
 
      <DriverSide type="NCName"> 
 
      <CurrentValue xsi:nil="true" /> 
 
      <CurrentTextValue xsi:nil="true" /> 
 
      </DriverSide> 
 
     </vehicleData> 
 
     </CheckResult> 
 
    </CheckResponse> 
 
    </soap:Body> 
 
</soap:Envelope> 
 
SOAP 1.2 
 

 
The following is a sample SOAP 1.2 request and response. The placeholders shown need to be replaced with actual values. 
 

 
POST /api/reg.asmx HTTP/1.1 
 
Host: www.regcheck.org.uk 
 
Content-Type: application/soap+xml; charset=utf-8 
 
Content-Length: length 
 

 
<?xml version="1.0" encoding="utf-8"?> 
 
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"> 
 
    <soap12:Body> 
 
    <Check xmlns="http://tempuri.org/"> 
 
     <RegistrationNumber>string</RegistrationNumber> 
 
     <username>string</username> 
 
    </Check> 
 
    </soap12:Body> 
 
</soap12:Envelope> 
 
HTTP/1.1 200 OK 
 
Content-Type: application/soap+xml; charset=utf-8 
 
Content-Length: length 
 

 
<?xml version="1.0" encoding="utf-8"?> 
 
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"> 
 
    <soap12:Body> 
 
    <CheckResponse xmlns="http://tempuri.org/"> 
 
     <CheckResult> 
 
     <vehicleJson>string</vehicleJson> 
 
     <vehicleXml>string</vehicleXml> 
 
     <numberOfSeats>string</numberOfSeats> 
 
     <carValue>string</carValue> 
 
     <immobiliser>string</immobiliser> 
 
     <vehicleData> 
 
      <ABICode type="NCName" /> 
 
      <Description type="NCName" /> 
 
      <RegistrationYear type="NCName" /> 
 
      <ManufactureYearFrom type="NCName" /> 
 
      <ManufactureYearTo type="NCName" /> 
 
      <CarMake type="NCName"> 
 
      <CurrentValue xsi:nil="true" /> 
 
      <CurrentTextValue xsi:nil="true" /> 
 
      </CarMake> 
 
      <CarModel type="NCName" /> 
 
      <BodyStyle type="NCName"> 
 
      <CurrentValue xsi:nil="true" /> 
 
      <CurrentTextValue xsi:nil="true" /> 
 
      </BodyStyle> 
 
      <EngineSize type="NCName"> 
 
      <CurrentValue xsi:nil="true" /> 
 
      <CurrentTextValue xsi:nil="true" /> 
 
      </EngineSize> 
 
      <NumberOfDoors type="NCName"> 
 
      <CurrentValue xsi:nil="true" /> 
 
      <CurrentTextValue xsi:nil="true" /> 
 
      </NumberOfDoors> 
 
      <Transmission type="NCName"> 
 
      <CurrentValue xsi:nil="true" /> 
 
      <CurrentTextValue xsi:nil="true" /> 
 
      </Transmission> 
 
      <FuelType type="NCName"> 
 
      <CurrentValue xsi:nil="true" /> 
 
      <CurrentTextValue xsi:nil="true" /> 
 
      </FuelType> 
 
      <MakeDescription type="NCName" /> 
 
      <ModelDescription type="NCName" /> 
 
      <Immobiliser type="NCName"> 
 
      <CurrentValue xsi:nil="true" /> 
 
      <CurrentTextValue xsi:nil="true" /> 
 
      </Immobiliser> 
 
      <NumberOfSeats type="NCName"> 
 
      <CurrentValue xsi:nil="true" /> 
 
      <CurrentTextValue xsi:nil="true" /> 
 
      </NumberOfSeats> 
 
      <IndicativeValue type="NCName" /> 
 
      <DriverSide type="NCName"> 
 
      <CurrentValue xsi:nil="true" /> 
 
      <CurrentTextValue xsi:nil="true" /> 
 
      </DriverSide> 
 
     </vehicleData> 
 
     </CheckResult> 
 
    </CheckResponse> 
 
    </soap12:Body> 
 
</soap12:Envelope> 
 
HTTP GET 
 

 
The following is a sample HTTP GET request and response. The placeholders shown need to be replaced with actual values. 
 

 
GET /api/reg.asmx/Check?RegistrationNumber=string&username=string HTTP/1.1 
 
Host: www.regcheck.org.uk 
 
HTTP/1.1 200 OK 
 
Content-Type: text/xml; charset=utf-8 
 
Content-Length: length 
 

 
<?xml version="1.0" encoding="utf-8"?> 
 
<Vehicle xmlns="http://tempuri.org/"> 
 
    <vehicleJson>string</vehicleJson> 
 
    <vehicleXml>string</vehicleXml> 
 
    <numberOfSeats>string</numberOfSeats> 
 
    <carValue>string</carValue> 
 
    <immobiliser>string</immobiliser> 
 
    <vehicleData> 
 
    <ABICode type="NCName" /> 
 
    <Description type="NCName" /> 
 
    <RegistrationYear type="NCName" /> 
 
    <ManufactureYearFrom type="NCName" /> 
 
    <ManufactureYearTo type="NCName" /> 
 
    <CarMake type="NCName"> 
 
     <CurrentValue type="NCName" /> 
 
     <CurrentTextValue type="NCName" /> 
 
    </CarMake> 
 
    <CarModel type="NCName" /> 
 
    <BodyStyle type="NCName"> 
 
     <CurrentValue type="NCName" /> 
 
     <CurrentTextValue type="NCName" /> 
 
    </BodyStyle> 
 
    <EngineSize type="NCName"> 
 
     <CurrentValue type="NCName" /> 
 
     <CurrentTextValue type="NCName" /> 
 
    </EngineSize> 
 
    <NumberOfDoors type="NCName"> 
 
     <CurrentValue type="NCName" /> 
 
     <CurrentTextValue type="NCName" /> 
 
    </NumberOfDoors> 
 
    <Transmission type="NCName"> 
 
     <CurrentValue type="NCName" /> 
 
     <CurrentTextValue type="NCName" /> 
 
    </Transmission> 
 
    <FuelType type="NCName"> 
 
     <CurrentValue type="NCName" /> 
 
     <CurrentTextValue type="NCName" /> 
 
    </FuelType> 
 
    <MakeDescription type="NCName" /> 
 
    <ModelDescription type="NCName" /> 
 
    <Immobiliser type="NCName"> 
 
     <CurrentValue type="NCName" /> 
 
     <CurrentTextValue type="NCName" /> 
 
    </Immobiliser> 
 
    <NumberOfSeats type="NCName"> 
 
     <CurrentValue type="NCName" /> 
 
     <CurrentTextValue type="NCName" /> 
 
    </NumberOfSeats> 
 
    <IndicativeValue type="NCName" /> 
 
    <DriverSide type="NCName"> 
 
     <CurrentValue type="NCName" /> 
 
     <CurrentTextValue type="NCName" /> 
 
    </DriverSide> 
 
    </vehicleData> 
 
</Vehicle> 
 
HTTP POST 
 

 
The following is a sample HTTP POST request and response. The placeholders shown need to be replaced with actual values. 
 

 
POST /api/reg.asmx/Check HTTP/1.1 
 
Host: www.regcheck.org.uk 
 
Content-Type: application/x-www-form-urlencoded 
 
Content-Length: length 
 

 
RegistrationNumber=string&username=string 
 
HTTP/1.1 200 OK 
 
Content-Type: text/xml; charset=utf-8 
 
Content-Length: length 
 

 
<?xml version="1.0" encoding="utf-8"?> 
 
<Vehicle xmlns="http://tempuri.org/"> 
 
    <vehicleJson>string</vehicleJson> 
 
    <vehicleXml>string</vehicleXml> 
 
    <numberOfSeats>string</numberOfSeats> 
 
    <carValue>string</carValue> 
 
    <immobiliser>string</immobiliser> 
 
    <vehicleData> 
 
    <ABICode type="NCName" /> 
 
    <Description type="NCName" /> 
 
    <RegistrationYear type="NCName" /> 
 
    <ManufactureYearFrom type="NCName" /> 
 
    <ManufactureYearTo type="NCName" /> 
 
    <CarMake type="NCName"> 
 
     <CurrentValue type="NCName" /> 
 
     <CurrentTextValue type="NCName" /> 
 
    </CarMake> 
 
    <CarModel type="NCName" /> 
 
    <BodyStyle type="NCName"> 
 
     <CurrentValue type="NCName" /> 
 
     <CurrentTextValue type="NCName" /> 
 
    </BodyStyle> 
 
    <EngineSize type="NCName"> 
 
     <CurrentValue type="NCName" /> 
 
     <CurrentTextValue type="NCName" /> 
 
    </EngineSize> 
 
    <NumberOfDoors type="NCName"> 
 
     <CurrentValue type="NCName" /> 
 
     <CurrentTextValue type="NCName" /> 
 
    </NumberOfDoors> 
 
    <Transmission type="NCName"> 
 
     <CurrentValue type="NCName" /> 
 
     <CurrentTextValue type="NCName" /> 
 
    </Transmission> 
 
    <FuelType type="NCName"> 
 
     <CurrentValue type="NCName" /> 
 
     <CurrentTextValue type="NCName" /> 
 
    </FuelType> 
 
    <MakeDescription type="NCName" /> 
 
    <ModelDescription type="NCName" /> 
 
    <Immobiliser type="NCName"> 
 
     <CurrentValue type="NCName" /> 
 
     <CurrentTextValue type="NCName" /> 
 
    </Immobiliser> 
 
    <NumberOfSeats type="NCName"> 
 
     <CurrentValue type="NCName" /> 
 
     <CurrentTextValue type="NCName" /> 
 
    </NumberOfSeats> 
 
    <IndicativeValue type="NCName" /> 
 
    <DriverSide type="NCName"> 
 
     <CurrentValue type="NCName" /> 
 
     <CurrentTextValue type="NCName" /> 
 
    </DriverSide> 
 
    </vehicleData> 
 
</Vehicle>

+0

這些是示例SOAP請求。你是什​​麼意思你試圖將它們插入到PHP腳本中? – axblount 2015-03-31 19:44:11

回答

0

我認爲你應該做一點點研究。有兩種方法可以解決這個問題。

1)您可以使用捲曲和模仿這些HTTP請求,並簡單地構建這是在PHP 5.0.1已經實現了更高(http://php.net/manual/en/class.soapclient.php頁眉

2)可以使用的SOAPClient後發送字符串結束) 。您要與之集成的網站必須具有一個WSDL文件,該文件將允許您將SOAPClient用於面向對象的事宜。

如果你研究上述主題,你應該知道如何做到這一點。

0

我用的網站「wsdltophp.com」產生此WebService代理類「www.regcheck.org.uk

https://www.wsdltophp.com/Wsdls/8a71627601a684624c5694104cce023f/RegCheck-1-0-1-1-1-1-0-0-0-0

您可以下載所有的文件,這裏的拉鍊; https://app.box.com/s/tepsfd6t0cahfdi9ivgnj305qocxrrt6

或者,您可以使用HTTP GET請求,可以通過HTTP GET請求調用該Web服務,如下所示;

<?php 
$username = 'Your username here'; 
$regNumber = 'SK08KPT'; 
$xmlData = file_get_contents("https://www.regcheck.org.uk/api/reg.asmx/Check?RegistrationNumber=" . $regNumber ."&username=" . $username); 
$xml=simplexml_load_string($xmlData);  
$strJson = $xml->vehicleJson;  
$json = json_decode($strJson);  
print_r($json->Description);  
?> 

不像SOAP調用那麼優雅,但更簡單。