2017-03-17 6 views
1

Ich versuche, einen einfachen PHP Webservice zu erstellen, da ich ein Neuling in diesem Track bin. Ich entschied mich, es mit SOAP zu entwickeln. Ich benutze WAMP als ein Server und das Problem ist, dass ich nicht in der Lage bin, die Skripte auszuführen oder die WSDL-Datei abzurufen.PHP SOAP Web Service

Hier server.php Code:

<?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(); 
?> 

und hier ist ein Screenshot des Laufes:

running server.php

Code Hier ist client.php suchen:

<?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; 
} 
?> 

und hier ist ein Screenshot des Laufs:

running client.php enter image description here

und dieser Fehler hält mich nervt:

Undefined variable: HTTP_RAW_POST_DATA

Antwort

0

u kann versuchen, diese unter Code

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

zu

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

Vielen Dank für Ihre Hilfe, aber ich will nicht, eine WSDL-Datei meiner eigenen hinzuzufügen. Stattdessen möchte ich es wie in J2EE generiert – user3090933

0

Sie versuchen, mit der undefinierten Variablen $HTTP_RAW_POST_DATA zu arbeiten. In PHP7 wird dieser Hook entfernt. Sie können here

Statt, dass ich vorschlagen, es zu tun, wie diese lesen:

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

Vielen Dank für Ihre Antwort, der Fehler verschwunden aber niw gibt es keine WSDL-Datei gedruckt – user3090933

+0

Ja, Sie sollten SOAP Prinzipien weiterleiten. WSDL ist ein Muss für diesen Standart. Sie können über SOAP in PHP hier lesen: http://php.net/manual/en/book.soap.php –