我有一个Web api控制器方法,如下所示:

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


我从java小程序调用此方法,URL为:

http://localhost1/api/PostMethod/1


我在第3行出现异常,说:

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

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

最佳答案

Web Api支持内容协商,您无需序列化对象即可将其返回。

Web Api将根据他们的要求自动将XML或Json返回给客户端

content-type: application/json


Web浏览器通常会以javascript Json的形式获取XML。您的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方法返回的内容。

09-26 04:10