2011-03-07 107 views
1

我有一个现有的WSDL,它使用SOAP将信息返回给远程设备。然而,我正在用Android编写一个不支持SOAP的新应用程序,所以我不能使用现有的WSDL,而必须编写一个新的应用程序,它会从Android应用程序查找查询字符串,并以JSON形式返回数据包。我已经编写了接收数据的模块,但我不确定如何将数据以JSON格式发回,是否有人在VB.Net或C#中有任何示例向我展示如何将数据返回给JSON请求者?如何从JSON请求发回数据

回答

2

使用DataContractJsonSerializer,你会很高兴知道.NET使得它非常简单。这里是一些代码,从HTTP处理程序中提取。 MyDataType是可序列化类的名称。

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我主要的博客文章,当我不得不这样做。

+0

这真的很有帮助,谢谢。正如我所提到的,我之前没有使用过Json,并且您的博客中的代码确实很有帮助。我是否认为我可以从我的Android应用程序调用我的模块,例如'http://myweb.com.default.ascx?memid = 333',然后在页面加载中处理查询字符串,并使用类似于上面的代码返回结果数据? – user616076 2011-03-07 18:02:26

+0

你可以使用ascx,但我通常会使用HTTP处理程序(ASMX文件)来处理这类事情,因为它们更轻量级。您可以使用context.Request.Params(“memid”)访问查询字符串,然后使用上面的代码将输出写入客户端。 – 2011-03-08 08:32:35