SOAP-Codierung
Zu Abschnitt 7.4.2 des Buchs
In diesem Beispiel werden folgende Konzepte dargestellt:
- Vergabe eines XML-Namensraumes (siehe Attribute [WebService(Namespace= ...)]
- Komplexe Datentypen (siehe TimeDesc) können genau wie primitive Datentypen
als Parameter verwendet werden
- Die SOAP-Codierung kann angepasst werden (siehe [SoapElement]). Diese Anpassung
ist bei einem Aufruf über HTTP-GET oder HTTP-POST nicht sichtbar. Darum wird beim
Ausführen des Web-Services mit der unten angegeben HTML-Seite die Variable TimeZone von TimeDesc
nicht wie erwartet als XML-Element "ZoneID" codiert. Um das Beispiel zu testen, empfehlen wir
die Verwendung des Web Service Studios.
TimeService3.asmx
<%@ WebService Language="C#" Class="Kapitel7.TimeService" %>
using System;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Serialization;
namespace Kapitel7 {
[SoapRpcService]
[WebService(Namespace="http://dotnet.jku.at/time/", Description="Returns the time")]
public class TimeService : WebService {
// ... andere Methoden
[WebMethod(Description="Returns the time description of the server")]
public TimeDesc GetTimeDesc() {
TimeDesc td = new TimeDesc();
DateTime time = DateTime.Now;
td.TimeLong = time.ToLongTimeString();
td.TimeShort = time.ToShortTimeString();
td.TimeZone = "1";
return td;
}
}
public struct TimeDesc {
public string TimeLong;
public string TimeShort;
[SoapElement (DataType="nonNegativeInteger", ElementName = "ZoneID")]
public string TimeZone;
}
}
|
Ausführung
Der nächste Link führt Sie zu einer automatisch erzeugten Seite. D.h. für den oben dargestellten Code
wird eine HTML-Seite erzeugt, welche das Web-Service beschreibt und auch eine Möglichkeit zum
Testen der Methoden anbietet.
http://dotnet.jku.at/book/samples/7/encoding/TimeService3.asmx
Eine weitere Möglichkeit, wie Sie dieses Web-Service testen können, ist das
Webservice Studio
zu verwenden, welches auf der Begleit-CD zum Buch "Die .NET-Technologie" enthalten ist.
Beim Ausfüren mit dem Webservice Studio, kann das Ergebnis so aussehen:
|