SOAP PHP Server maken.
Ik ben op dit moment bezig met het maken van een SOAP server maar dit wil nog niet echt lukken.
Ik heb van een klant een WSDL file gekregen, op basis van deze WSDL file moet ik een SOAP server maken.
Nu ben ik al een tijdje aan het proberen geweest, eerst de wiki van SOAP en PHP van PFZ gevolgd dit lukte allemaal.
Daarna ben ik gaan proberen met het door de klant aangeleverde SOAP bestand, echter wil dit nog niet lukken.
Ik krijg het niet voor elkaar om een request te doen en al zeker niet om een return te krijgen.
Dit is mijn SOAP server:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
ini_set('display_errors',1);
error_reporting(E_ALL|E_STRICT);
if(!extension_loaded("soap")){
dl("php_soap.dll");
}
ini_set("soap.wsdl_cache_enabled","0");
class GetAccount {
public $IpAddress;
}
function GetAccount(GetAccount $parameters){
return '2222';
}
$server = new SoapServer("AccountResolver.wsdl");
$server->AddFunction("GetAccount");
$server->handle();
?>
ini_set('display_errors',1);
error_reporting(E_ALL|E_STRICT);
if(!extension_loaded("soap")){
dl("php_soap.dll");
}
ini_set("soap.wsdl_cache_enabled","0");
class GetAccount {
public $IpAddress;
}
function GetAccount(GetAccount $parameters){
return '2222';
}
$server = new SoapServer("AccountResolver.wsdl");
$server->AddFunction("GetAccount");
$server->handle();
?>
Dit is mij test Client:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
ini_set('display_errors',1);
error_reporting(E_ALL|E_STRICT);
$client = new SoapClient( 'http://localhost/AccountResolver.wsdl', array( 'trace'=>1 ) );
$return2 = $client->GetAccount(array("GetAccount" => "222"));
$return = $client->__soapCall("GetAccount", array('GetAccount' => array("10.10.0.254")));
var_dump($return2);
highlight_string( $client->__getLastRequest() );
highlight_string( $client->__getLastResponse() );
echo '<br/>request'. $client->__getLastRequest();
echo '<br/>response'. $client->__getLastResponse();
echo'<pre>';
print_r( $client->__getFunctions() );
print_r( $client->__getTypes() );
echo '</pre>';
print_R("\nReturning value of __soapCall() call: ".$return);
?>
ini_set('display_errors',1);
error_reporting(E_ALL|E_STRICT);
$client = new SoapClient( 'http://localhost/AccountResolver.wsdl', array( 'trace'=>1 ) );
$return2 = $client->GetAccount(array("GetAccount" => "222"));
$return = $client->__soapCall("GetAccount", array('GetAccount' => array("10.10.0.254")));
var_dump($return2);
highlight_string( $client->__getLastRequest() );
highlight_string( $client->__getLastResponse() );
echo '<br/>request'. $client->__getLastRequest();
echo '<br/>response'. $client->__getLastResponse();
echo'<pre>';
print_r( $client->__getFunctions() );
print_r( $client->__getTypes() );
echo '</pre>';
print_R("\nReturning value of __soapCall() call: ".$return);
?>
En dit is het resultaat van mijn Client:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
object(stdClass)#2 (0) { } <?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://tempuri.org/"><SOAP-ENV:Body><ns1:GetAccount/></SOAP-ENV:Body></SOAP-ENV:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://tempuri.org/"><SOAP-ENV:Body><ns1:GetAccountResponse/></SOAP-ENV:Body></SOAP-ENV:Envelope>
request
response
Array
(
[0] => GetAccountResponse GetAccount(GetAccount $parameters)
)
Array
(
[0] => struct AccountRequest {
string IpAddress;
}
[1] => struct AccountReply {
int ErrorCodeField;
string ErrorDescriptionField;
string TanCode;
}
[2] => int char
[3] => duration duration
[4] => string guid
[5] => struct GetAccount {
AccountRequest request;
}
[6] => struct GetAccountResponse {
AccountReply GetAccountResult;
}
)
Catchable fatal error: Object of class stdClass could not be converted to string in C:\Users\mvhee_000\Desktop\USBWebserver v8.5\USBWebserver v8.5\8.5\root\client.php on line 24
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://tempuri.org/"><SOAP-ENV:Body><ns1:GetAccount/></SOAP-ENV:Body></SOAP-ENV:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://tempuri.org/"><SOAP-ENV:Body><ns1:GetAccountResponse/></SOAP-ENV:Body></SOAP-ENV:Envelope>
request
response
Array
(
[0] => GetAccountResponse GetAccount(GetAccount $parameters)
)
Array
(
[0] => struct AccountRequest {
string IpAddress;
}
[1] => struct AccountReply {
int ErrorCodeField;
string ErrorDescriptionField;
string TanCode;
}
[2] => int char
[3] => duration duration
[4] => string guid
[5] => struct GetAccount {
AccountRequest request;
}
[6] => struct GetAccountResponse {
AccountReply GetAccountResult;
}
)
Catchable fatal error: Object of class stdClass could not be converted to string in C:\Users\mvhee_000\Desktop\USBWebserver v8.5\USBWebserver v8.5\8.5\root\client.php on line 24
Kan iemand mij verder opgang helpen, al de soap servers op in ternet werken maar met simpele types echter kom ik hier niet verder mee.
Graag hoop ik dat ik er samen met jullie en goede server voor kan maken.
Met Vriendelijke Groet,
Mark
Gewijzigd op 26/03/2013 11:09:26 door Mark H
--------
Hoi,
Is er iemand die mij kan helpen?
Mark
http://php.net/manual/en/book.soap.php
En je zal dit maar eens moeten bekijken : http://qooqle.nl/?q=SOAP+PHP
Google op SOAP PHP, eerste hit: En je zal dit maar eens moeten bekijken : http://qooqle.nl/?q=SOAP+PHP