webForumDet fria alternativet

SOAP - hur tusan går man till väga?

PHP

5 svar · 506 visningar · startad av pär(kulator)

Medlem sedan sep. 200913 inlägg
Frågan#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

Medlem sedan mars 20007 896 inlägg
#2
$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å?

Medlem sedan feb. 20034 441 inlägg
#3

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.

Medlem sedan sep. 200913 inlägg
#4

<< 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

Medlem sedan sep. 200913 inlägg
#5

Fick till det, allt i sin ordning. Nu kan jag en sak mer från NULL om SOAP.

Medlem sedan feb. 20034 441 inlägg
#6

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.

308 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
165 ms — deklarationer (db)
0 ms — hämta statistik (cache)
140 ms — hämta tråd, inlägg och bilagor (db)
163 ms — ändringar (db)