2012-04-17 4 views
1

MonoDroid에서 IIS에서 호스팅 한 ASP.NET 웹 API를 호출하려고합니다. 이 서비스는 괜찮 았고 다른 끝점에서 호출 할 수 있습니다. 문제는 MonoDroid에서 이렇게하려고 할 때 잘못된 캐스트 예외가 발생한다는 것입니다.ASP.NET 웹 API 및 MonoDroid

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

System.InvalidCastException :로드 부분에 돌아옵니다.

나는 약간의 읽기를했으며 사람들은 JsonNetFormatter 클래스를 사용하기 위해 웹 API를 전환하려고한다고 말한다. 나는 그것을 시도했지만 여전히 운이 없다.

아무도 내가 시도 할 수있는 아이디어가 있습니까? 여기

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

browser/fiddler/...에서 서비스를 호출하고 JSON을 가져 와서 여기에 게시하십시오. JSON을 먼저 살펴 보지 않고 서비스에서 어떤 것도 변경하지 마십시오. – Aliostad

+0

더 많은 것 Fiddler.HTTP/1.1 200 OK 캐시 제어 : no-cache Pragma : no-cache 내용 유형 : application/json; 0x서버 : Microsoft-IIS/7.0 X-AspNet-Version : 4.0.30319 X-Powered-By : ASP.NET 날짜 : 2012 년 4 월 17 일, 화요일 16:20 : 56 GMT 콘텐츠 길이 : 151 [{ "AlbumPK": "f9d14cf-3bab-44c8-b614-2b7cf728efd4", "이름": "Colorado", "UserName": "emorin", "ParentAlbumFK" "DateCreated": "2012-03-12T19 : 47 : 54.493"}] – Ernie

+0

첫 번째 XML은 무엇입니까? 어느 것이 맞습니까? 업데이트 질문, 제발 코멘트를 사용하지 마십시오. – Aliostad

답변

0

서버가 청크 인코딩 방식으로 데이터를 전송하고 있으며 MonoDroid가 청크 인코딩을 이해하는 데 문제가있는 것 같습니다. IIS에서 해제 해보십시오.

+0

내 모노 애플 리케이션에서 json 헤더를 설정합니다. 나는 바이올린으로 그것을 시도 할 것이다. – Ernie

+0

@Ernie가 업데이트를 살펴 봅니다. – Aliostad

+0

나는 그것을 끄는 것으로 들여다 보았다. 그러나 나의 호스팅 회사는 그것을위한 선택이 없다. 흥미로운 점은 로컬로 배포하려고했는데 피들 러에서 청크 분할에 대한 동일한 결과를 얻는 것입니다. 심지어 cassini에서 나는 같은 것을 얻는다. 웹 주위를 보니 나는 Web Api가 콘텐츠 길이를 설정하지 않는다는 게시물을 발견 했으므로 내 추측에 따르면 이것이 chuncked하게됩니다. – Ernie