Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.1 (Deutsch) » SQL Anywhere Server - Programmierung » HTTP-Webdienste » Zugriff auf Webdienste mithilfe von Webclients » Webclient-Anwendungsentwicklung » Anforderungen und Empfehlungen für Webclient-Funktionen und -Prozeduren

 

Anforderungen an den SOAP-Namespace-URI

Der Namespace-URI gibt den XML-Namespace an, aus dem der SOAP-Anforderungsrahmen für den angegebenen SOAP-Vorgang erstellt wird. Die Domänenkomponente der URL-Klausel wird verwendet, wenn der Namespace-URI nicht definiert ist.

Der SOAP-Prozessor auf dem Server verwendet diesen URI, um die Namen der verschiedenen Entitäten im Nachrichtenhauptteil der Anforderung zu interpretieren. Die NAMESPACE-Klausel der Anweisungen CREATE PROCEDURE und CREATE FUNCTION gibt den Namespace-URI an.

Möglicherweise müssen Sie einen Namespace-URI angeben, damit Prozeduraufrufe gelingen. Diese Informationen werden normalerweise in der öffentlichen Webserver-Dokumentation erläutert, Sie können jedoch den erforderlichen Namespace-URI auch über WSDL vom Webserver erhalten. Sie können WSDL durch Zugriff auf den DISH-Dienst generieren, wenn Sie versuchen, mit einem SQL Anywhere-Webserver zu kommunizieren.

Im Allgemeinen kann der NAMESPACE aus dem targetNamespace-Attribut, das am Beginn des WSDL-Dokuments innerhalb des wsdl:definition Elements angegeben wird, kopiert werden. Gehen Sie mit großer Sorgfalt vor, wenn Sie nachgestellte '/' einbeziehen, denn sie sind signifikant. Prüfen Sie außerdem, ob der angegebene SOAP-Vorgang ein soapAction-Attribut enthält. Es sollte dem SOAPAction-HTTP-Header entsprechen, der wie in den folgenden Absätzen erläutert generiert wird.

Die NAMESPACE-Klausel erfüllt zwei Funktionen. Sie gibt den Namespace für den Hauptteil des SOAP-Envelope an. Falls für die Prozedur TYPE 'SOAP:DOC' angegeben wurde, wird sie außerdem als Domänenkomponente des SOAPAction-HTTP-Headers benutzt.

Das folgende Beispiel veranschaulicht die Verwendung der NAMESPACE-Klausel:

CREATE FUNCTION an_operation(a_parameter LONG VARCHAR)
    RETURNS LONG VARCHAR
    URL 'http://wsdl.domain.com/fictitious.asmx'
    TYPE 'SOAP:DOC'
    NAMESPACE 'http://wsdl.domain.com/'

Führen Sie die folgende SQL-Anweisung in Interactive SQL aus:

SELECT an_operation('a_value');

Die Anweisung erstellt eine SOAP-Anforderung ähnlich wie die folgende Ausgabe:



POST /fictitious.asmx HTTP/1.0
SOAPAction: "http://wsdl.domain.com/an_operation"
Host: wsdl.domain.com
Content-Type: text/xml
Content-Length: 387
Connection: close

<?xml version="1.0"?>
<SOAP-ENV:Envelope
 xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
 xmlns:xs="http://www.w3.org/2001/XMLSchema"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns:m="http://wsdl.domain.com/">
  <SOAP-ENV:Body>
   <m:an_operation>
    <m:a_parameter>a_value</m:a_parameter>
   </m:an_operation>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Der Namespace für das Präfix 'm' ist auf http://wsdl.domain.com/ gesetzt und der SOAPAction-HTTP-Header gibt eine vollständig qualifizierte URL für den SOAP-Vorgang an.

Der nachgestellte Schrägstrich ist keine Voraussetzung für die richtige Funktion von SQL Anywhere. Er kann jedoch zu einem Antwortfehler führen, der schwer zu diagnostizieren ist. Der SOAPAction-HTTP-Header wird unabhängig von dem nachgestellten Schrägstrich richtig generiert.

Wenn kein NAMESPACE angegeben ist, wird die Domänenkomponente der URL-Klausel als Namespace für den SOAP-Hauptteil verwendet. Wenn für die Prozedur TYPE 'SOAP:DOC' angegeben ist, wird er außerdem verwendet, um die HTTP-Header für HTTP-SOAPAction zu generieren. Wenn im oben genannten Beispiel die NAMESPACE-Klausel nicht angegeben ist, dann wird http://wsdl.domain.com als Namespace verwendet. Der feine Unterschied liegt darin, dass kein nachgestellter Schrägstrich '/' vorhanden ist. In jeder anderen Beziehung ist die SOAP-Anforderung, einschließlich des SOAPAction-HTTP-Headers, mit dem oben genannten Beispiel identisch.

Die NAMESPACE-Klausel dient zur Festlegung des Namespace für den SOAP-Hauptteil, wie oben für SOAP:DOC beschrieben. Der SOAPAction-HTTP-Header wird jedoch mit einem leeren Wert generiert: SOAPAction: ""

Bei Verwendung des SOAP:DOC-Anforderungstyps wird der Namespace auch benutzt, um den SOAPAction-HTTP-Header zu erstellen.

 Siehe auch