You are not logged in.

  • Login

1

Wednesday, October 31st 2007, 2:43pm

Webservice per SOAP ansprechen

Hallo zusammen,

ich versuche einen Webservice mit PHP via SOAP anzusprechen.
Der Webservice erwartet von mir folgende XML Struktur:

XML Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Header>
	<LoginControl xmlns="http://server.de/o2Web/o2Con">
  	<username>string</username>
  	<password>string</password>
	</LoginControl>
  </soap:Header>
  <soap:Body>
	<GetItemInfo xmlns="http://server.de/o2Web/o2Con">
  	<InItemsRows>
    	<InItemsRow>
      	<ItemID>int</ItemID>
      	<Quantity>double</Quantity>
    	</InItemsRow>
    	<InItemsRow>
      	<ItemID>int</ItemID>
      	<Quantity>double</Quantity>
    	</InItemsRow>
  	</InItemsRows>
	</GetItemInfo>
  </soap:Body>
</soap:Envelope>


Ich habe mir die PHP doku bezüglich SOAP durchgelesen, aber leider ist mir unklar, wie ich diese Struktur mit diesen Mitteln hinbekomme.

Mein erster Versucht war:

PHP Quellcode

1
2
3
4
$client = new SoapClient("https://server.de/o2Web/o2Con.asmx?WSDL",array('trace' => 1));
$parms = array('Quantity' => 5,
           	'ItemID'   => 4757380);
$result = $client->__soapCall("GetItemInfo",$parms);

Als Meldung kommt

PHP Quellcode

1
"Anmeldeinformationen erforderlich (Kundennummer/Kennwort)."


Desweiteren ist der Webservice per Soap Header geschützt.

Kann mir jemand weiterhelfen, wie man das macht?

Gruß jogi

2

Wednesday, October 31st 2007, 5:06pm

Hi,

ich habe noch keine Authentifizierung mit PHP und SOAP gemacht, aber nach dem Manual sollte es ungefähr so gehen:

PHP Quellcode

1
2
3
4
5
6
7
8
$client = new SoapClient("....");
 
$x = array();
$x["username"]="jogisarge";
$x["password"]="*****";
 
$x = new SoapVar($x, SOAP_ENC_OBJECT, "LoginControl","http://server.de/o2Web/o2Con"); 
$client->__setSoapHeaders(array(new SoapHeader('http://www.itworks.nl/','AuthenticationHeader',$x)));


Ansonsten schau dir nochmal das Manuela zu SoapHeader genauer an oder frag einfach nochmal.
In unserem Wiki haben wir SOAP Header auch verwendetet: PHP SOAP Server mit WSDL und API Schlüssel

Similar threads

Social bookmarks