2017-03-17 99 views
1

我想創建一個簡單的PHP web服務,因爲我是這個軌道中的新手。我決定用SOAP開發它。我使用WAMP作爲服務器,問題是我無法運行腳本,也無法獲取WSDL文件。PHP的SOAP Web服務

這裏的server.php代碼:

<?php 
//call library 
require_once ('lib/nusoap.php'); 
//using soap_server to create server object 
$server = new soap_server; 

//register a function that works on server 
$server->register('get_message'); 

// create the function 
function get_message($your_name) 
{ 
if(!$your_name){ 
return new soap_fault('Client','','Put Your Name!'); 
} 
$result = "Hello World ".$your_name .". Thanks for Your First Web Service Using PHP with SOAP"; 
return $result; 
} 
// create HTTP listener 
$server->service($HTTP_RAW_POST_DATA); 
exit(); 
?> 

和這裏的運行截圖:

running server.php

這裏的client.php代碼:

<?php 
require_once ('lib/nusoap.php'); 
//Give it value at parameter 
$param = array('your_name' => 'Omar'); 
//Create object that referer a web services 
$client = new soapclient('http://localhost/WebServiceSOAP/server.php'); 
//Call a function at server and send parameters too 
$response = $client->call('get_message',$param); 
//Process result 
if($client->fault) 
{ 
echo "FAULT: <p>Code: (".$client->faultcode."</p>"; 
echo "String: ".$client->faultstring; 
} 
else 
{ 
echo $response; 
} 
?> 

,這裏是一個運行截圖:

running client.php enter image description here

加上這個錯誤一直纏着我:

未定義的變量:HTTP_RAW_POST_DATA

回答

0

ü可以試試這個下面的代碼

$client = new soapclient('http://localhost/WebServiceSOAP/server.php'); 

$client = new SoapClient(
    null, 
    array(
     'location' => 'ADD YOUR LOCATION', 
     'uri' => 'ADD YOUR WSDL FILE ', 
     'trace' => 1, 
     'use' => SOAP_LITERAL, 
    ) 
); 
+0

感謝您的幫助,但我不想增加我自己的WSDL文件。相反,我希望它生成在J2EE – user3090933

0

您正在嘗試使用未定義的變量$HTTP_RAW_POST_DATA。在PHP7中,該鉤子被刪除。您可以閱讀here

取而代之的是我建議做這樣的:

$server->service(file_get_contents("php://input")); 
+0

感謝您的回覆,錯誤消失,但niw沒有打印wsdl文件 – user3090933

+0

是的,您應該轉發SOAP原則。 WSDL是這種標準的必須要點。你可以在這裏閱讀關於SOAP的SOAP:http://php.net/manual/en/book.soap.php –