c# - 响应.Write(对象)

标签 c# .net asp.net

如果我有一个网页做这样的事情,

protected void Page_Load(object sender, EventArgs e)
    {
        List<string> items = new List<string>()
        {
            "test1",
            "test2",
            "test3"
        };

        Response.Write(items);
    }

如何在另一端取回列表,例如我在另一端有这样的代码,

static void Main(string[] args)
    {
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://localhost:50513/Default.aspx");

        HttpWebResponse response = (HttpWebResponse)request.GetResponse();

        Stream responseStream = response.GetResponseStream();
    }

我该如何真正拉回列表?

由于我必须使用的第三方 API 的限制,我必须使用 asp .net 页面。

最佳答案

要进一步扩展 Joe 的回答,最好的办法是使用 JSON.NET 序列化和反序列化列表。由于 Web 只能来回发送字符串,因此 JSON 非常适合通过 Web 发送对象。您可以像这样序列化列表(使用 JSON.NET):

List<string> items = new List<string>()
{
    "test1",
    "test2",
    "test3"
};

var json = JsonConvert.SerializeObject(items);
Response.Write(json);

这将写入响应:

["test1", "test2", "test3"]

在接收端,使用:

var list = JsonConvert.DeserializeObject<List<string>>(json);

您将取回原始列表。至于图标,如果你不能传递链接而实际上需要传递图标本身,你可以将文件序列化为 Base64 编码的字符串(然后对其进行解码),或者你可以使用 BSON:

http://james.newtonking.com/archive/2009/12/26/json-net-3-5-release-6-binary-json-bson-support.aspx

虽然我自己没有做过,所以我无法提供示例,抱歉。

关于c# - 响应.Write(对象),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2323229/

相关文章:

c# - 性能计数器 - System.InvalidOperationException : Category does not exist

c# - 检查枚举属性中是否为 null

当两个参数都可以为 null 时,Equals() 的 C# 简写

.net - 是否可以在第一个 WCF 客户端请求进入之前获得对 WCF ServiceHost 单例实例的引用?

c# - 为移动 Sprite 计时

java - 在 Java 中使用 .NET Web 服务的最佳方式

c# - c#中的字母数字正则表达式

c# - 错误 : There is already an open DataReader associated with this Command which must be closed first

c# - 将值分配到键类型为 <Tuple<int,int> C# 的字典中

c# - ProtoBuf-net AsReference 需要 Activator.CreateInstance 中的公共(public)构造函数吗?