Hallo,
ich bastel hier jetz schon 1,5 Tage an einer SOAP-Schnittstelle mit nuSOAP rum.
Diese geht soweit auch ganz gut, solange man nicht versucht diese mit SSL anzusprechen.
Um nuSOAP mit SSL auch zu betreiben braucht man ja cURL, das habe ich auch soweit eingerichtet und getestet, also dachte ich mir gut dann sollte das ja ohne probleme laufen, leider bekomme ich immer ein und die selbe fehlermeldung:
Code:
wsdl error: HTTP ERROR: cURL ERROR: 7: couldn't connect to host
hier mal der code
die Server-Datei:
Code:
<?php
// include the SOAP classes
require_once('nusoap/nusoap.php');
// create the server object
$server = new soap_server;
// Initialize WSDL support
$server->configureWSDL('data_transferwsdl', 'urn:data_transferwsdl');
// Register the method to expose
$server->register('data_transfer', // method name
array('nd4_request' => 'xsd:string'), // input parameters
array('return' => 'xsd:string'), // output parameters
'urn:data_transferwsdl', // namespace
'urn:data_transferwsdl#data_transfer', // soapaction
'rpc', // style
'encoded', // use
'data_transfer' // documentation
);
// Define the method as a PHP function
function data_transfer($request)
{
$obj_xml = simplexml_load_string($request);
return '<?xml version="1.0" encoding="ISO-8859-1" ?><nd4_response><user>' . $obj_xml->orderDeliveredRequestMessage->BESTELLUNG->PROSPEKT[0]->VERSANDDATUM . '</user></nd4_response>';
}
// Use the request to (try to) invoke the service
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
$server->service($HTTP_RAW_POST_DATA);
?>
Der Client:
Code:
<?php
// include the SOAP classes
require_once('nusoap/nusoap.php');
$client = new soapclient('https://meineURL.eu/server.php?wsdl', true);
// Check for an error
$err = $client->getError();
if ($err)
{
// Display the error
echo '<h2>Constructor error</h2><pre>' . $err . '</pre>';
// At this point, you know the call that follows will fail
}
// Call the SOAP method
$test = '<?xml version="1.0" encoding="ISO-8859-1" ?>
<nd4_request>
<action>orderDelivered</action>
<orderDeliveredRequestMessage>
<BESTELLUNG bestellid="1">
<PROSPEKT>
<WM_ID>1</WM_ID>
<VERSANDDATUM>12.12.08</VERSANDDATUM>
</PROSPEKT>
<PROSPEKT>
<WM_ID>2</WM_ID>
<VERSANDDATUM>12.12.08</VERSANDDATUM>
</PROSPEKT>
</BESTELLUNG>
</orderDeliveredRequestMessage>
</nd4_request>
';
$result = $client->call('data_transfer', array('nd4_request' => utf8_encode($test)));
// Check for a fault
if ($client->fault)
{
echo '<h2>Fault</h2><pre>';
print_r($result);
echo '</pre>';
}
else
{
// Check for errors
$err = $client->getError();
if ($err)
{
// Display the error
echo '<h2>Error</h2><pre>' . $err . '</pre>';
}
else
{
// Display the result
echo '<h2>Result</h2><pre>';
print_r(htmlentities($result));
echo '</pre>';
}
}
// Display the request and 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>';
// Display the debug messages
echo '<h2>Debug</h2>';
echo '<pre>' . htmlspecialchars($client->debug_str, ENT_QUOTES) . '</pre>';
?>
also von der sacher her möchte ich einen einfachen sting, der ein XML sein soll, über die schnittstelle versenden.
cURL infos über phpinfo():
curlcURL support enabled
cURL Information libcurl/7.16.0 OpenSSL/0.9.8e zlib/1.2.3
PHP Version 5.2.4
Das SSL-Zertifikat auf der Seite ist selfemade, falls das was sagen hat.
Den Server kann man über HTTPS im Browser normal aufrufen und sieht gut aus.
sollte noch was fehlen an infos dann sagts mir
Na denn danke schonmal für die mühe.
gruß
Typhon