-1
我是SOAP Web服務的新手,並試圖學習它們,我有一個在laravel框架中開發的項目,其中一個客戶端以SOAP消息的形式發送請求,怎麼做我解析SOAP請求並訪問請求中傳遞的變量以進一步處理?使用SOAP Web服務和訪問客戶端請求參數php
我是SOAP Web服務的新手,並試圖學習它們,我有一個在laravel框架中開發的項目,其中一個客戶端以SOAP消息的形式發送請求,怎麼做我解析SOAP請求並訪問請求中傳遞的變量以進一步處理?使用SOAP Web服務和訪問客戶端請求參數php
要處理肥皂請求,您需要soap_client。
你可以做到這一點有3種方式,
1)使用PHP SoapClient()
功能
<?php
$wsdl = "https://<your_web_service_url>?wsdl";
$client = new SoapClient($wsdl, array('trace'=>1)); // The trace param will show you errors stack
// web service input params
$request_param = array(
"param1" => $value1,
"param2" => $value2,
"param3" => $value3,
"param4" => $value4
);
try
{
$responce_param = $client->webservice_methode_name($request_param);
//$responce_param = $client->call("webservice_methode_name", $request_param); // Alternative way to call soap method
}
catch (Exception $e)
{
echo "<h2>Exception Error!</h2>";
echo $e->getMessage();
}
?>
2)的NuSOAP庫創建SOAP客戶端 的實例的NuSOAP庫檢查,
NuSoap Library and soap client Example
<?php
require_once('lib/nusoap.php');
$wsdl = "http://<your_web_service_url>?wsdl";
$client = new nusoap_client($wsdl, 'wsdl');
// Input params
$username = "username";
$password = "pass";
// In this demo, we use json data , you can use any other data format for same
$json = '{"param1":"value1","param2":"value2"}';
$client->setCredentials($username, $password);
$error = $client->getError();
if ($error)
{
echo $error; die();
}
$action = "webservice_methode_name"; // webservice method name
$result = array();
if (isset($action))
{
$result['response'] = $client->call($action, $json);
}
echo "<h3>Output : </h3>";
echo $result['response'];
echo "<h2>Request</h2>";
echo "<pre>" . htmlspecialchars($client->request, ENT_QUOTES) . "</pre>";
echo "<h2>Response</h2>";
echo "<pre>" . htmlspecialchars($client->response, ENT_QUOTES) . "</pre>";
?>
3)使用捲曲可以調用皁web服務
<?php
$webservice_url = "https://<your_web_service_url>";
$request_param = array(
"param1" => $value1,
"param2" => $value2,
"param3" => $value3,
"param4" => $value4
);
$ch = curl_init($webservice_url);
curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_POSTFIELDS, $request_param);
//curl_setopt ($ch, CURLOPT_TIMEOUT, 120);
// time allowed to connect to server
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,30);
// time allowed to process curl call
curl_setopt($ch,CURLOPT_TIMEOUT,120);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_VERBOSE, true);
$verbose = fopen('php://temp', 'w+');
curl_setopt($ch, CURLOPT_STDERR, $verbose);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, "<username>:<password>");
/* ** Alternative way to set username and password ** */
//$headers = array(
// 'Content-Type:application/xml',
// 'Authorization: Basic '. base64_encode("<username>:<password>")
//);
//curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_SSLVERSION,3);
$data = curl_exec ($ch);
$result = $data;
if ($result === FALSE) {
printf("cUrl error (#%d): %s<br>\n", curl_errno($ch),
htmlspecialchars(curl_error($ch)));
}
curl_close ($ch);
echo "Responce : ".$data;
?>
在PARAMS我看你傳遞
是那些在請求被髮送的請求參數? – sam
以及如何從Web服務請求打印出參數 – sam
是,第一種方法(使用SoapClient()方法)「$ request_param」是實際的Web服務請求參數。 – StarSagar