2010-11-26 10 views

Antwort

2

Die IHttpHandler Schnittstelle implementiert nur zwei Dinge:

Boolean IsReusable {get;} 

void ProcessRequest(HttpContext context); 

Also nein ... im engeren Sinne ist es nicht einen Wert zurückgeben soll. Jetzt können Sie Ihre response so gestalten, wie Sie es wollen (SOAP/XML/JSON). In der Tat können Sie alles zurückgeben, was Ihr Herz begehrt, solange HTTP es unterstützen kann und der Client, der es verbraucht, weiß, wie es damit umgehen soll.

Es ist jedoch unklug, zu versuchen, Ihre eigenen Dienste über eine HttpHandler zu implementieren, da es simpler and more efficient ways gibt, das gleiche zu erreichen.

1

Die HttpHandler Antworten durch seine ProcessRequest(HttpContext context) Methode, in der Sie den Parameter context ändern können, um zu sagen, was Sie als Antwort zurücksenden möchten. spezifiziert den MIME-Typ der Antwort, zum Beispiel ist die Antwort text/html, so dass der Browser es zu einer HTML-Seite rendern wird. Oder die Antwort ist video/mp4 der Browser wird versuchen, es zu öffnen und in den meisten Fällen zeigt der Browser einen Download-Dialog. Leider gibt es keine text/array im MIME-Typ (und ich denke, dass es in Zukunft nicht mehr geben wird). Aber Sie können Ihren Array-Wert als reinen Text mit speziellen Formaten übergeben und auf der Clientseite deserialisieren. Hier ist ein einfaches Beispiel:

public void ProcessRequest(HttpContext context) 
{ 
    context.Response.ContentType = "text/plain"; 
    context.Response.Write("[1,2,3,4]"); 
} 

und auf Client-Seite in javascript:

var response = GetTheResponse(); //maybe via ajax or something equivalent. 
var myArray = eval(response); //myArray[0]=1,myArray[1]=2... 

In einem realen Projekt, Sie können einen Array mit komplexen Objekten in ihr erhalten (nicht nur einfache Zahlen) . Sie benötigen also beispielsweise systematisierte Serialisierungs-/Deserialisierungsstandards, z. B. serialisieren Sie Ihr Array des Person-Objekts in json-Strings und schreiben es in die Antwort, und Sie deserialisieren sie auf der Clientseite mit einigen json-Utils.

Verwandte Themen