Webservice via php nutzen -
Verfasst: 4. September 2018 11:18
Hallo Community,
ich möchte den Webservice von Navision nutzen, um einen Webshop anzubinden. Trotz vieler Suchstunden im Internet komme ich leider nicht weiter...
Den Webservice im Navision habe ich aktiviert (wie in den Internetbeispielen Page,21,Kunde usw.). Der SOAP-Webservice lässt sich auch im Browser öffnen und gibt eine entsprechende XML-Struktur zurück, beim OData kommt es lustigerweise als Newsfeed (ohne Daten, aber mit der richtigen Anzahl der Kunden).
Wenn ich versuche den SOAP-Webservice zu benutzen...
...kommt beim Ausführen der letzten Zeile folgende Fehlermeldung:
Das Internet reagiert mit wüsten Anpassungen der $context- und $options-Variablen (wie man oben sieht), was leider nichts hilft. $baseUrl stimmt, direkt vom Navision übernommen und im Browser getestet. Interessanterweise kann ich sowohl bei $baseUrl, $login und $password reinschreiben, was ich will, die Fehlermeldung ändert sich nicht > d.h. irgendetwas anderes ist faul, nur was?
Mit OData-Webservice und Curl habe ich es auch probiert...
... hier kommt zwar kein Fehler zurück, aber immer NULL.
Seht Ihr vielleicht auf den ersten Blick etwas oder habt einen Diagnose-Tipp oder Link, der mir weiterhilft?
Viele Grüße,
Dga
Navision: 2013 R2
Php 7.1.11 (Xampp)
ich möchte den Webservice von Navision nutzen, um einen Webshop anzubinden. Trotz vieler Suchstunden im Internet komme ich leider nicht weiter...
Den Webservice im Navision habe ich aktiviert (wie in den Internetbeispielen Page,21,Kunde usw.). Der SOAP-Webservice lässt sich auch im Browser öffnen und gibt eine entsprechende XML-Struktur zurück, beim OData kommt es lustigerweise als Newsfeed (ohne Daten, aber mit der richtigen Anzahl der Kunden).
Wenn ich versuche den SOAP-Webservice zu benutzen...
- Code:
$context = stream_context_create([
'ssl' => [
// set some SSL/TLS specific options
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true
//'crypto_method' => STREAM_CRYPTO_METHOD_TLS_CLIENT
]
]);
$options = array(
'encoding' => 'UTF-8',
'verifypeer' => false,
'verifyhost' => false,
'soap_version' => SOAP_1_2,
'trace' => 1,
'exceptions' => 1,
'connection_timeout' => 180,
// 'cache_wsdl'=>WSDL_CACHE_NONE,
"login" => $login,
"password" => $password,
"features" => SOAP_SINGLE_ELEMENT_ARRAYS,
"stream_context" => $context);
$page = new SoapClient($baseUrl, $options);
...kommt beim Ausführen der letzten Zeile folgende Fehlermeldung:
Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn't load from 'xxx' : failed to load external entity "xxx" in C:\Installation\xampp\htdocs\phptest\index.php:76 Stack trace: #0 C:\Installation\xampp\htdocs\phptest\index.php(76): SoapClient->SoapClient('http://....', Array) #1 {main} thrown in C:\Installation\xampp\htdocs\phptest\index.php on line 76
Das Internet reagiert mit wüsten Anpassungen der $context- und $options-Variablen (wie man oben sieht), was leider nichts hilft. $baseUrl stimmt, direkt vom Navision übernommen und im Browser getestet. Interessanterweise kann ich sowohl bei $baseUrl, $login und $password reinschreiben, was ich will, die Fehlermeldung ändert sich nicht > d.h. irgendetwas anderes ist faul, nur was?
Mit OData-Webservice und Curl habe ich es auch probiert...
- Code:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $baseUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERPWD, 'xxx');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
// 'Method: GET',
// 'User-Agent: PHP-SOAP-CURL',
// 'Content-Type: text/xml; charset=utf-8',
// 'SOAPAction: Read',
'Connection: Keep-Alive',
'Accept: application/json',
'Content-Type: application/json; charset=utf-8',
"Accept:*"
]);
$res = curl_exec($ch);
if( $res === false ) {
echo 'Curl-Fehler (OData-Abfrage): ' . curl_error($ch).'<br />';
}
else {
echo $res;
$response = json_decode($res);
echo json_encode($response, JSON_PRETTY_PRINT);
}
/* $response = json_decode(curl_exec($ch), TRUE);
echo json_encode($response, JSON_PRETTY_PRINT); */
// Close handle
curl_close($ch);
... hier kommt zwar kein Fehler zurück, aber immer NULL.
Seht Ihr vielleicht auf den ersten Blick etwas oder habt einen Diagnose-Tipp oder Link, der mir weiterhilft?
Viele Grüße,
Dga
Navision: 2013 R2
Php 7.1.11 (Xampp)