Frågan 27 okt. 2009 12:56 #1 Hej, jag försöker få till ett SOAP-anrop,
till min hjälp har jag en soap-xml som visar hur det
skall se ut. Den ser ut så här:
POST /StockOnline/StockService.asmx HTTP/1.1
Host: weblink.solar.se
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length
<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
<soap12:Body>
<StockState xmlns="http://tempuri.org/StockOnline/StockService">
<AccountNO>string</AccountNO>
<LoginId>string</LoginId>
<PostalCode>string</PostalCode>
<ArticleNo>string</ArticleNo>
</StockState>
</soap12:Body>
</soap12:Envelope>
Än så länge har jag gjort följande:
$client = new SoapClient ("http://weblink.solar.se/StockOnline/StockService.asmx?WSDL",
array(
"trace" => 1,
"exceptions" => 0
));
med följande anrop vet jag att förljande funktioner finns tillgängliga:
var_dump($client->__getFunctions());
array(2) {
[0]=>
string(53) "StockStateResponse StockState(StockState $parameters)"
[1]=>
string(53) "StockStateResponse StockState(StockState $parameters)"
}
Vad gör jag nu typ?
Pär
S SPiN Medlem sedan mars 2000 7 896 inlägg $stockStateResponse = $client->StockState(...);
Sen får du troligtvis mappa resultatet mot ett objekt/array. Det lättaste är att dumpa resultatet först, för att se vad du får tillbaka för objekt.
$stockStateResponse = $client->StockState(...);
var_dump($stockStateResponse);
Sen är ju frågan vad funktionen förväntar sig för parameter? Den verkar ju vilja ha något i form av StockState - men det kanske du har koll på?
Mitt förslag är att du använder NuSoap , det är 100 ggr lättare och fungerar mycket bättre än PHP's vanliga nusoapfunktioner.
Gjorde en integration så sent som förra veckan och satt mest och svor innan jag testade med NuSoap och kom igång direkt.
<< testade NuSoap men utan resultat, fortsätter med php-biblioteket >>
Bara några enkla allmänna frågot kring SOAP ifall nu kan svara:
- i "body" i xml'en ovan finns följande fält
<StockState xmlns="http://tempuri.org/StockOnline/StockService ">
<AccountNO>string</AccountNO>
<LoginId>string</LoginId>
<PostalCode>string</PostalCode>
<ArticleNo>string</ArticleNo>
Hur lägger jag till de fälten med hjälp av api-funktionerna?
Kan jag skicka en SOAP rent ordagrant, så att säga, som en xml,
eller är jag tvungen att använda php-biblioteket?
Tror jag inte hajjar de underliggande mekanismerna kring detta...
Pär
Fick till det, allt i sin ordning. Nu kan jag en sak mer från NULL om SOAP.
pär(kulator) skrev:
Kan jag skicka en SOAP rent ordagrant, så att säga, som en xml,
eller är jag tvungen att använda php-biblioteket?
Nej, du bygger upp koden med hjälp av funktioner samt array'er där alla parametrar ligger, sen fixa NuSoap eller PHP's egna resten och bygger giltig XML av det hela.
Du kan ju berätta hur du gjort, så kanske andra har nytta av ditt svar framöver.