我有一个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′
type无法序列化内容类型’application / json的响应主体;
字符集= UTF-8′ “.
可能的解决办法是什么?如何通过Webapi控制器方法将流作为JSON对象发送?
最佳答案 Web Api支持内容协商,您不需要序列化对象只需返回它.
Web Api将根据他们的要求自动将XML或Json返回给客户端
content-type: application/json
Web浏览器通常会获得XML,而javascript则是json.你的java applet只需要上面的标题(它实际上看起来可能已经发送了).
[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方法返回的内容;