Mamphil
Erfahrenes Mitglied
Hallo,
ich will ohne WSDL-Datei auskommen, die entsprechenden Parameter also manuell als zweiten Parameter übergeben.
Funktionierendes Beispiel:
Ergebnis der letzten Zeile:
Wie muss der Aufruf aussehen, wenn ich ohne die WSDL-Datei auskommen will? Folgendes habe ich funktioniert:
Dies führt zu folgendem Fehler:
Wo kommt die Raute (erste Code-Zeile, bitte nach rechts scrollen) her und wie kriege ich sie weg?
Oder etwas allgemeiner gefragt: Wie muss der Aufruf richtig aussehen?
Danke für eure Hilfe!
Mamphil
ich will ohne WSDL-Datei auskommen, die entsprechenden Parameter also manuell als zweiten Parameter übergeben.
Funktionierendes Beispiel:
PHP:
<?php
$client = new SoapClient('http://www50.brinkster.com/vbfacileinpt/np.asmx?wsdl', array('trace' => 1));
$result = $client->__getFunctions();
print_r($result);
$result = $client->__getTypes();
print_r($result);
$result = $client->GetPrimeNumbers( array('max' => 100) );
print_r($result);
echo 'R: ' . $client->__getLastRequest() . "\n";
echo 'H: ' . $client->__getLastRequestHeaders() . "\n\n";
?>
Ergebnis der letzten Zeile:
Code:
POST /vbfacileinpt/np.asmx HTTP/1.1
Host: www50.brinkster.com
Connection: Keep-Alive
User-Agent: PHP-SOAP/5.2.0-8+etch10
Content-Type: text/xml; charset=utf-8
SOAPAction: "http://microsoft.com/webservices/GetPrimeNumbers"
Content-Length: 280
Wie muss der Aufruf aussehen, wenn ich ohne die WSDL-Datei auskommen will? Folgendes habe ich funktioniert:
PHP:
<?php
$client = new SoapClient(null,
array(
'location' => 'http://www50.brinkster.com/vbfacileinpt/np.asmx',
'uri' => 'http://microsoft.com/webservices/',
'trace' => 1
)
);
// ...
?>
Code:
Fatal error: Uncaught SoapFault exception: [soap:Client] System.Web.Services.Protocols.SoapException: Server did not recognize the value of HTTP Header SOAPAction: http://microsoft.com/webservices/#GetPrimeNumbers.
at System.Web.Services.Protocols.Soap11ServerProtocolHelper.RouteRequest()
at System.Web.Services.Protocols.SoapServerProtocol.Initialize()
at System.Web.Services.Protocols.ServerProtocolFactory.Create(Type type, HttpContext context, HttpRequest request, HttpResponse response, Boolean& abortProcessing) in /opt/www/.../soap_test.php:19
Stack trace:
#0 [internal function]: SoapClient->__call('GetPrimeNumbers', Array)
#1 /opt/www/.../soap_test.php(19): SoapClient->GetPrimeNumbers(Array)
#2 {main}
thrown in /opt/www/.../soap_test.php on line 19
Oder etwas allgemeiner gefragt: Wie muss der Aufruf richtig aussehen?
Danke für eure Hilfe!
Mamphil