2011-12-08 3 views
3

WebApi를 사용하면 MVC 클라이언트에서 서비스를 사용하는 가장 좋은 방법은 무엇입니까? MVC3에서 WebApi 사용

응답이 다시로 온다면

:

내가, 내 연락처를 얻을 @Model를 사용하여 MVC3 면도기보기에서 그들을 나열해야 취할 수있는 방법
<?xml version="1.0" encoding="UTF-8"?> 
<ArrayOfContact 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <Contact> 
     <Id>1</Id> 
     <Name>Bilbo Baggins</Name> 
    </Contact> 
    <Contact> 
     <Id>2</Id> 
     <Name>Frodo Baggins</Name> 
    </Contact> 
</ArrayOfContact> 

?

는 WebApi의 최신 미리보기에 대한 lot of examples online있다하지만, 웹 클라이언트를 사용하여 말 서비스를 소비하는 클라이언트 을 한 단계 더 갈 그 어떤을 찾아 표시 할 수 없습니다.

감사합니다,

R.가

당신은 모델 정의 할 수
+0

, 서비스는 괜찮습니다. var contacts = new WebClient()를 실행하면 DownloadString ("http : // localhost : 9000/api/contacts"); 나는 XML 파일을 걱정하지 않는다. – Richard

+0

XML에 Linq를 사용합니다. 몇 가지 예를 보려면 [이 질문 [1]]을보십시오. [1] : http://stackoverflow.com/questions/670563/linq-to-read-xml – Lloyd

답변

5

: 다음

public class Contact 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
} 

과 소비 :

var url = "http://localhost:9000/api/contacts"; 
using (var client = new WebClient()) 
using (var reader = XmlReader.Create(client.OpenRead(url))) 
{ 
    var serializer = new XmlSerializer(typeof(Contact[])); 
    var contacts = (Contact[])serializer.Deserialize(reader); 
    // TODO: Do something with the contacts 
} 
+0

나는 가능한 알렉산더의 대답하지만, 대런의 작품을 얻을처럼 같은 거라고. – Richard

5

WCF 웹 API는 새로운 함께 제공, 개선 HttpClient를 이행. this sample (here을 다운로드 할 수있는 소스 코드에 포함되어 있음)을 살펴보십시오.

[업데이트] 추가 가치

var client = new HttpClient(); 
var task = client.GetAsync("http://webapi/Contacts"); 
var contacts = task.ContinueWith(
    t => { 
     return t.Result.Content.ReadAsAsync<List<Contact>>(); 
    }).Unwrap().Result; 

Console.WriteLine(contacts.Count); 
+0

잘 생겼지 만 강력한 형식의 객체에 XML 응답을 어떻게 매핑합니까? – Richard

+0

응답의 Content 속성에 액세스하고 ReadAsAsync 을 호출 할 수 있습니다. 여기서 T는 사용자의 유형입니다. HttpClient는 XmlFormatter의 빌드를 사용하여 XML을 deserialize합니다. –

+1

내 대답이 업데이트되었습니다. –