2011-03-07 3 views
1

J'ai un fichier WSDL existant qui renvoie des informations aux périphériques distants utilisant SOAP. Cependant, j'écris une nouvelle application avec Android qui ne supporte pas SOAP, donc je ne peux pas utiliser le WSDL existant et j'ai dû coder une nouvelle application qui cherche une chaîne de requête à partir de l'application Android et retourne les données dans un JSON paquet. J'ai codé le module qui reçoit les données correctes mais je ne sais pas comment retourner les données au format JSON, est-ce que quelqu'un a des exemples dans VB.Net ou C# qui me montre comment retourner les données au demandeur JSON?Comment renvoyer des données à partir d'une demande JSON

Répondre

2

Vous serez heureux de savoir que .NET rend cela très simple, en utilisant le DataContractJsonSerializer. Voici du code extrait d'un gestionnaire HTTP. MyDataType est le nom de votre classe sérialisable.

context.Response.ContentType = "application/json"; 
MyDataType someObject = new MyDataType(); 
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(MyDataType)); 
using (MemoryStream ms = new MemoryStream()) 
{ 
    ser.WriteObject(ms, data); 
    ms.Seek(0, SeekOrigin.Begin); 

    StreamReader sr = new StreamReader(ms); 
    string json = sr.ReadToEnd(); 
    Trace("Returning JSON:\n" + json + "\n"); 
    context.Response.Write(json); 
} 

This is le poste principal de blog, j'utilisé quand je devais le faire.

+0

C'est très utile, merci. Comme je l'ai mentionné, je n'ai jamais utilisé Json auparavant et le code de votre blog était très utile. Ai-je raison de penser que je peux appeler mon module depuis mon application Android comme 'http: //myweb.com.default.ascx? Memid = 333' puis traiter la chaîne de requête dans pageload et retourner les données résultantes en utilisant un code similaire à celui ci-dessus ? – user616076

+0

Vous pouvez utiliser un ascx, mais j'utiliserais généralement un gestionnaire HTTP (un fichier ASMX) pour ce genre de chose, car ils sont beaucoup plus légers. Vous pouvez accéder à la chaîne de requête en utilisant context.Request.Params ("memid"), puis utiliser le code ci-dessus pour écrire la sortie sur votre client. –

Questions connexes