【问题标题】:ASP.NET Web API and MonoDroidASP.NET Web API 和 MonoDroid
【发布时间】:2012-05-31 06:31:33
【问题描述】:

我正在尝试从 MonoDroid 调用我在 IIS 中托管的 ASP.NET Web API。该服务很好,我可以从不同的端点调用它。问题是,在 MonoDroid 中,当我尝试执行此操作时,我得到了无效的强制转换异常。

var s = response.GetResponseStream();
var j = (JsonObject)JsonObject.Load(s);

System.InvalidCastException:返回加载部分。

我做了一些阅读,人们似乎说要尝试切换 Web API 以使用 JsonNetFormatter 类。我试过了,但仍然没有运气。

有人对我可以尝试什么有任何想法吗?

更新

这里是有效载荷

<ArrayOfAlbum xmlns:xsi="w3.org/2001/XMLSchema-instance"; 
              xmlns:xsd="w3.org/2001/XMLSchema">; 
   <Album> 
      <AlbumPK>f09d14cf-3bab-44c8-b614-2b7cf728efd4</AlbumPK>
      <Name>Colorado</Name> 
      <UserName>firstUser</UserName> 
      <ParentAlbumFK xsi:nil="true" /> 
      <DateCreated>2012-03-12T19:47:54.493</DateCreated> 
   </Album> 
</ArrayOfAlbum>

 [{"AlbumPK":"f09d14cf-3bab-44c8-b614-2b7cf728efd4","Name":"Colorado",
    "UserName":"emorin","ParentAlbumFK":null,
    "DateCr‌​eated":"2012-03-12T19:47:54.493"}]

来自 Fiddler 将接受标头更改为 JSON 的响应。

HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Transfer-Encoding: chunked
Content-Type: application/json; charset=utf-8
Expires: -1
Server: Microsoft-IIS/7.0
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Tue, 17 Apr 2012 19:45:47 GMT

97
[{ "AlbumPK":"f09d14cf-3bab-44c8-614-2b7cf728efd4","Name":"Colorado",
   "UserName":"emorin","ParentAlbumFK":null,
   "DateCreated":"2012-03-12T19:47:54.493"}]
0

【问题讨论】:

  • 尝试从 browser/fiddler/... 调用服务并获取 JSON 并在此处发布。在不先查看 JSON 的情况下,不要更改您的服务中的任何内容。
  • 更多来自 Fiddler.HTTP/1.1 200 OK Cache-Control: no-cache Pragma: no-cache Content-Type: application/json; charset=utf-8 过期:-1 服务器:Microsoft-IIS/7.0 X-AspNet-Version:4.0.30319 X-Powered-By:ASP.NET 日期:2012 年 4 月 17 日星期二 16:20:56 GMT Content-Length : 151 [{"AlbumPK":"f09d14cf-3bab-44c8-b614-2b7cf728efd4","Name":"Colorado","UserName":"emorin","ParentAlbumFK":null,"DateCreated":"2012-03 -12T19:47:54.493"}]
  • 那么第一个 XML 是什么?哪一个是正确的?请更新问题,不要使用评论。
  • 抱歉,第一个是来自浏览器的 XML。第二个是我在提琴手中看到的。

标签: xamarin.android asp.net-web-api


【解决方案1】:

您的服务器似乎正在以分块编码发送数据,并且可能 MonoDroid 在理解分块编码时遇到问题。尝试在 IIS 中将其关闭。

【讨论】:

  • 在我的单声道应用程序中,我将标头设置为 json。我会在 fiddler 中尝试一下。
  • 我考虑将其关闭,但我的托管公司对此没有选择。有趣的是我尝试在本地部署它,并且从提琴手关于被分块的相同结果。即使没有卡西尼,我也会得到同样的结果。环顾网络,我发现一篇帖子说 Web Api 没有设置内容长度,所以我的猜测是这会导致分块。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-27
  • 1970-01-01
相关资源
最近更新 更多