2012-04-17 78 views
1

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

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

System.InvalidCastException:返回加载部分。

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

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

UPDATE

这里是有效载荷

<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> 

从提琴手改变接受头JSON
[{"AlbumPK":"f09d14cf-3bab-44c8-b614-2b7cf728efd4","Name":"Colorado", 
    "UserName":"emorin","ParentAlbumFK":null, 
    "DateCr‌​eated":"2012-03-12T19:47:54.493"}] 

响应。

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 
+0

尝试从浏览器/ fiddler/...调用服务并获取JSON并将其发布到此处。如果没有首先查看JSON,请不要更改您的服务中的任何内容。 – Aliostad 2012-04-17 08:37:59

+0

更多来自Fiddler.HTTP/1.1 200 OK Cache-Control:no-cache Pragma:no-cache Content-Type:application/json;字符集= UTF-8 到期日:-1 服务器:Microsoft-IIS/7.0 X-ASPNET-版本:4.0.30319 X供电,通过: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”}] – Ernie 2012-04-17 16:23:06

+0

那么第一个XML是什么?哪一个是正确的?请更新问题,不要使用评论。 – Aliostad 2012-04-17 16:27:30

回答

0

看来你的服务器是在分块编码发送数据,或许MonoDroid的是有问题的理解分块编码。尝试在IIS中关闭它。

+0

在我的单声道应用程序中,我将标题设置为json。我会在小提琴手中尝试。 – Ernie 2012-04-17 19:28:22

+0

@Ernie看看更新。 – Aliostad 2012-04-17 21:05:16

+0

我看着关掉它,但我的托管公司没有这个选择。有趣的是我尝试在本地部署它,并从小提琴手的相同结果关于被分块。即使是卡西尼,我也会得到同样的结果。环顾网络,我发现一篇文章说Web Api没有设置内容长度,所以我的猜测是这导致了大块头。 – Ernie 2012-04-18 03:28:47