4

我有一个 web api 控制器方法如下:

[HttpPost]
public string PostMethod(int id)
{
  Stream downloadStream = Service.downloadStream(id);  
  JavaScriptSerializer jsonSerializer = new JavaScriptSerializer();
  string output  = jsonSerializer.Serialize(downloadStream);
}

我从 java applet 调用这个方法,url 为:

http://localhost1/api/PostMethod/1

我在第 3 行得到一个异常,说:

“此流不支持超时,'ObjectContent`1' 类型无法序列化内容类型 'application/json; charset=utf-8' 的响应正文。”

可能的解决方案是什么?如何通过 Webapi 控制器方法将流作为 JSON 对象发送?

4

1 回答 1

2

Web Api 支持内容协商,不需要序列化对象直接返回即可。

Web Api 会根据客户端的要求自动返回 XML 或 Json

content-type: application/json

Web 浏览器通常会获取 XML,而作为 javascript Json。您的 java 小程序只需要上面的标头(实际上看起来可能已经发送)。

[HttpPost]
public string PostMethod(int id)
{
   Stream downloadStream = Service.downloadStream(id);  
   System.IO.MemoryStream memoryStream = new System.IO.MemoryStream();
   downloadStream.CopyTo(memoryStream);
   return memoryStream.ToString();
}

这在很大程度上取决于 downloadStream 方法返回的内容;

于 2012-10-12T19:19:04.923 回答