2016-01-06 33 views
0

我猜我試圖使用Web API進行交互,就好像這些是SOAP Web服務XML的天數。其中,WSDL到基於代理的CLR對象是在通過HTTP與服務器通信後生成的。我不期待使用JSON.NET來執行JSON響應,但是,如果必須的話。我們都知道(我們所有的ASP.NET web開發人員) - 我們可以使用Web API(和Web API 2等)簡單地將一些JSON發佈到api控制器和模型綁定(err .. parameter binding?)能夠將其解析爲我的首選CLR對象。中的WinForms使用的HttpClient:可以用類似的模式結合在網頁API發現我解析JSON結果

比方說,我現在有希望與我看中的Web API服務器交互的WinForms客戶端 - 並且我相信我應該使用HttpClient

是否有與交互的首選方式去跟該Web API Web API從中獲取CLR對象?我相信我會得到JSON出來的,我必須再綁定到CLR對象......這是我的主要問題..我該怎麼辦我的客戶端上的CLR-從JSON的相同實例是當我將JSON發佈到服務器時,我看到了情況。


UPDATE


關鍵術語我沒想到,當我第一次寫這個問題是「反序列化」 ..現在我發現結果一樣JsonConvert.DeserializeObject<MyObj>(json);System.Web.Script.Serialization.JavaScriptSerializer

仍然好奇,如果有一個優惠 -

+0

只是爲了看看,如果我得到它的權利。你想知道你怎麼能轉換的CLR JSON和做一個POST到您的API,或者是你怎麼能映射JSON響應CLR對象?後者是 – jpgrassi

+0

。因爲我看到Web API自動神奇地結合成JSON CLR ..是有辦法,我可以做同樣的事情到了一塊JSON的Web服務器管道之外..所以..我知道模型綁定考慮到路線和其他位這不會是在我的客戶端上下文可以..但..我仍然希望有一個簡單的「參考這個命名空間」和「調用該方法」得到的是什麼已經很明顯那裏的MVC /網絡API堆棧 – bkwdesign

+0

我不知道這樣的事情..我會用JSON。 NET,但那不是你想要的,對吧? – jpgrassi

回答

1

你可以(嘗試)讀取響應的內容Htt pClient作爲任何對象。 下面是一個簡單的方法

public async Task<List<GroupListViewRow>> ListAccountGroupAsync(Guid ledgerId) { 
     var response = await this.http.GetAsync($"v1/group/list?ledgerId={ledgerId}"); 
     response.EnsureSuccessStatusCode(); 
     var res = await response.Content.ReadAsAsync<List<GroupListViewRow>>(); 
     return res; 
    } 

這一個是讀取響應,就好像它是List<GroupListViewRow>

+0

好的所有屬性,當我在接下來的一週開始編寫我的解決方案的這部分代碼時,將嘗試此操作。請記住,我在WInForms客戶端內部工作,所以我沒有可用的普通Web應用程序上下文。 (我需要在我的項目中使用哪些'using'語句或dll以供上述代碼工作?) – bkwdesign

+0

如果您使用的是.net 4.5+,則必須引用System.Net.Http for舊版本獲取nuget包Microsoftfto .AspNet.WebApi.Client –

+0

我的winForms是.NET 4 ..去試試'Install-Package Microsoft.AspNet.WebApi.Client -Version 4.0.20710' – bkwdesign