2011-08-31 2 views
0

WP7 앱을 만들고 있는데, 제작자도 아니고 프로 바이더도 아니기 때문에 만지거나 적응할 수없는 ASMX를 소비하고 있습니다. 단지 그것을 소비하고 있습니다.WP7이 ASMX를 올바르게 소비하지 못합니까? 항상 빈 배열을 얻으시겠습니까?

서비스 참조를 내 WP7 솔루션에 추가하면 (망고가 아니라 망고에서와 동일한 동작 임), 참조 된 어셈블리에서 재사용 할 유형을 선택하지 않을 것입니다. 사이드 노트 : 체크 박스를 체크 된 상태로 두어도 작동하지 않습니다.

그때 나는 새로운 WP7 페이지의 생성자에 다음 코드를 추가

MobileWS.WebServiceSoapClient ws = new MobileWS.WebServiceSoapClient("WebServiceSoap", "http://www.somewhere.com/MobileService.asmx"); 
ws.getCountriesCompleted += new EventHandler<MobileWS.getCountriesCompletedEventArgs>(OnGetCountriesCompleted); 
ws.getCountriesAsync("fr"); 

이 꺼지고 국가 객체의 배열을 가져가 ("FR"는 "프랑스어"의 약자, 그래서거야 "미국"대신 "Etas Unis"가되어야 함) ... 적어도 그것이 아이디어입니다. 나는 Fiddler2가 무엇인가를 반환했는지 확인해 보았고 실제로 ASMX는 국가를 포함하는 XML로 응답합니다.

그런 다음 내 핸들러는 다음과 같이 진행됩니다

private void OnGetCountriesCompleted(object sender, MobileWS.getCountriesCompletedEventArgs e) 
{ 
    if (e.Cancelled == false && e.Error == null && e.Result != null) 
    { 
     List<MobileWS.Country> countries = e.Result.ToList<MobileWS.Country>(); 
     CountriesListBox.ItemsSource = countries; 
    } 
} 

를 유감 스럽지만 e.Result는 항상 모든 그래서 비 국가 오브젝트 (의 빈 배열을 반환하지만 그는 거기에 국가의 목적이 있어야 알고 있지만,이 배열에 0 개의 항목이 있음)!

비록 내가 다음을 찾으면 : http://www.somewhere.com/MobileService.asmx 나는 getCountries 함수를 호출 할 때 목록을 얻습니다. 나는 그것이 마치 마법처럼 작동하는 WPF 응용 프로그램에서 복사하고 동일한 코드를 통과 할 때 은 더욱 이상한, 나는 7 국가로 채워진 배열에서 개체를 얻을.

가 무슨 일이야

?

지금까지 반환 된 XML을 직접 구문 분석하는 것을 거부하고 있습니다. 그러나이 오류로 인해 조만간 조만간 필요할 것으로 생각됩니다.


나는 되돌아 오는 XML이 정확하다는 것을 확신한다. 그렇지 않으면 WPF 응용 프로그램에서도 비슷한 문제가 발생한다.

그럼 내가 직접 파싱 할 운명 인 것 같습니다. 웹에서 많은 예제를 보았습니다 (XML 결과 자체를 파싱하는 이유). 그 이유가 있어야하며 그 이유는 위에서 설명한 것입니다. :)

답변

0

소리가 직렬화 문제와 같습니다. 그리고 그것은 서비스 나 사용 된 클래스가 작성/생성되는 방법을 모른 채 말할 수있는 전부입니다.

Windows Phone은 공개 기능이 제한되어 있으므로 공개/내부 클래스에만 반영 될 수 있으며 동적 특성을 지원하지 않습니다.

0

결과를 직접 deserialize하려고하면 어떻게됩니까? 허락하신다면, XML을 수동으로 파싱하는 것부터 멀어 지지만, 뭔가가 있습니다. 그렇지 않다면 어쩌면 잘못 될지 알 수 있습니다.

+0

"결과를 직접 deserialize"한다는 것은 무엇을 의미합니까 ... 저는 이제 WebGet을 파싱하여 웹 서비스의 객체를 "채우고"있다고 ​​생각합니다. (다시 호출하는 방법이 확실하지 않습니다. ,하지만 기본적으로 httpget 않습니다). – Michael

+0

XmlSerializer를 사용하면 ... –

관련 문제