2010-11-26 18 views

Répondre

2

L'interface IHttpHandler implémente seulement deux choses:

Boolean IsReusable {get;} 

void ProcessRequest(HttpContext context); 

donc pas ... dans le sens le plus strict, il ne vise pas à retourner une valeur. Maintenant, vous pouvez façonner votre response pour regarder comme vous le souhaitez (SOAP/XML/JSON). Donc, en effet, vous pouvez retourner tout ce que votre cœur désire tant que HTTP peut le supporter, et le client qui le consomme sait comment y faire face.

Cependant, il est déconseillé d'essayer d'implémenter vos propres services via un HttpHandler car il y a simpler and more efficient ways pour accomplir la même chose.

1

Les réponses HttpHandler par sa méthode ProcessRequest(HttpContext context), dans laquelle vous pouvez modifier le paramètre context pour indiquer ce que vous voulez renvoyer comme réponse. context.Response.ContentType spécifie le type MIME de la réponse, par exemple la réponse est text/html afin que le navigateur le rendra à une page html.Ou la réponse est video/mp4 le navigateur va essayer de l'ouvrir et dans la plupart des cas le navigateur affichera une boîte de dialogue de téléchargement. Malheureusement, il n'y a pas de text/array dans le type MIME (et je pense qu'il n'y en aura pas dans le futur). Mais vous pouvez transmettre votre valeur de tableau en texte brut avec des formats spéciaux et la désérialiser du côté client. Voici un exemple simple:

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

et à côté client en javascript:

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

Dans un projet réel, vous pouvez obtenir un tableau avec des objets complexes en elle (pas seulement des chiffres simples) . Vous avez donc besoin de normes de sérialisation/désérialisation systématisées, par exemple, vous sérialisez votre tableau d'objet Person en chaînes json et l'écrivez dans la réponse, et vous les désérialisez du côté client en utilisant certains utilitaires json.