Mir ist gerade klar geworden, dass ich in naher Zukunft mit einer SOAP API interagieren muss. Bis jetzt habe ich nur REST-APIs und niemals eine SOAP-API verwendet.Wie stelle ich eine Verbindung zum folgenden SOAP-Beispieldienst in PHP her und fordere diesen an?
Ich habe über SOAP-APIs zu lesen und so weit mein (sehr wahrscheinlich falsch) Verständnis ist wie folgt:
- Sie zuerst an den SOAP-Dienst verbinden. Wenn Sie eine Verbindung herstellen, geben Sie die URL der WSDL-Datei ein, die Ihnen dann mitteilt, welche "Dienste" (hier verwende ich den richtigen Begriff?) Über die SOAP-API verfügbar sind.
- Sobald Sie wissen, welchen Dienst Sie aufrufen möchten, rufen Sie den Dienst mit den erforderlichen Parametern auf und senden eine XML-Anforderung an den SOAP-Server, auf der er eine XML-Antwort zurücksendet.
Ich habe zwei Fragen:
- Ist mein Verständnis von SOAP oben ist auch richtig zu beginnen?
- Wie verwende ich PHP auf die folgende Beispiel für eine SOAP-API zu verbinden und Anfragen zu stellen: http://www.webservicex.com/globalweather.asmx?op=GetWeather
(Wenn die Probe SOAP API oben verlinkten nicht sehr gut ist, dann bin ich offen zu lernen, wie SOAP mit anderen Beispiel für eine SOAP-APIs zu verwenden, die verfügbar sind)
bearbeiten. pawelwaw, schrieb ich den folgenden Beispielcode alles aus zu testen, aber es scheint so, egal, welchen Wert ich für CityName
verwenden in der GetWeather
Operation bekomme ich keine Daten zurück. Ist mein Verständnis falsch oder ist die SOAP-API einfach nicht sehr gut?
<?php
$client = new SoapClient('http://www.webservicex.com/globalweather.asmx?wsdl');
echo '<h2>Types:</h2>';
echo '<pre>';
var_dump($client->__getTypes());
echo '</pre>';
echo '<h2>Functions:</h2>';
echo '<pre>';
var_dump($client->__getFunctions());
echo '</pre>';
echo '<h2>GetCitiesByCountry:</h2>';
echo '<pre>';
echo htmlentities($client->GetCitiesByCountry([
'CountryName' => 'Poland'
])->GetCitiesByCountryResult);
echo '</pre>';
echo '<h2>GetWeather:</h2>';
echo '<pre>';
var_dump($client->GetWeather([
'CityName' => 'Krakow',
'CountryName' => 'Poland'
]));
echo '</pre>';
pawelwaw, vielen Dank für die Antwort. Es macht viel Sinn. Bitte beachten Sie die Bearbeitung in meiner Frage für eine zusätzliche Frage. Vielen Dank. – HartleySan
Es scheint, dass Funktion GetWeather nicht funktioniert. Sie können eine dieser Apis verwenden, einige von ihnen sind kostenlos https://superdevresources.com/weather-forecast-api-for-developing-apps/ – pawelwaw
Vielen Dank für die Bestätigung. Ich wollte nur sicherstellen, dass ich verstanden habe, wie man einen SOAP-Service in PHP richtig benutzt und dass die API selbst kaputt war (und nicht mein Verständnis). – HartleySan