2011-09-19 204 views
1

我無法確定您是否可以構建.Net 2.0 REST客戶端。我搜索了高和低,但只有遇到提及使用3.5和WCF的結果。如果可能的話,我希望能夠使用2.0構建一個.Net REST客戶端。我對我想要完成的任務有一個大致的瞭解,並且遇到了針對經過身份驗證的REST Web服務傳遞參數的問題。我正在尋找.Net 2.0 vb或c#的示例。.NET 2.0 Rest客戶端

目前我正在嘗試使用HttpWebRequest的,但遇到了問題:

我上的GetResponse()行接收
 Dim ord As order 
     Dim url As String = String.Format("https://login.someurl.com/rest/order/{0}", Web.HttpUtility.UrlEncode(id)) 
     Dim request As HttpWebRequest = WebRequest.Create(New Uri(url)) 
     request.Method = "GET" 
     request.ContentType = "application/json" 
     request.Credentials = New NetworkCredential(UserName, Password) 
     Dim resp As HttpWebResponse = Nothing 

     resp = request.GetResponse() 
     Dim reader As StreamReader = New StreamReader(resp.GetResponseStream) 
     Dim response As String = reader.ReadToEnd 

     ord = JsonConvert.DeserializeObject(response) 

錯誤消息爲:「遠程服務器返回錯誤:(412)參數錯誤。 「

+0

您確定該服務支持json嗎? – dkackman

+0

@dkackman正面,這是在api文檔 –

回答

0

您可以使用類似RestSharp的庫。

RestSharp is a simple, open source REST client for .NET designed primarily for consuming third-party HTTP APIs.

+0

我已經看過,但我不能使用該庫,因爲它需要.net 3.5 –

+2

@Mike D - .NET 3.5使用2.0運行時。你應該可以很好地使用二進制文件。 – Oded

+0

@Oded,取決於,如果庫引用.NET 3。5個組件,例如'System.Core',它將無法工作。兩個框架使用相同CLR的事實並不意味着針對.NET 3.5編譯的程序集將在僅安裝了.NET 2.0的機器上運行。看着[RestSharp.csproj](https://github.com/johnsheehan/RestSharp/blob/master/RestSharp/RestSharp.csproj),它似乎需要System.Core。 –

0

您應該能夠建立一個REST客戶端沒有什麼比WebClient類是提供給.NET 2.0的更多。

this WP7 app關聯的代碼有一個簡單的代碼。雖然應用程序本身是.net 4我不認爲有任何內容太難以移植到.net 2(只要您喜歡XPath,XDocument很容易替換爲XmlDocument)

+0

看我的編輯,尋找一個例子來幫助解決我的問題可能存在的地方。 –

3

設置接受標題,而不是ContentType。 ContentType僅在您發送數據時使用。只是爲了澄清,你實際上並沒有使用WebClient,你使用的是完全不同的HttpWebRequest和HttpWebResponse對象。

此外,請確保安裝Fiddler,以便您可以實際看到線路上發生了什麼。它會讓你的生活更輕鬆。

+0

那裏好,我留下了一些修改WebClient對象的代碼。我確實安裝了提琴手,我會從那裏看看我的要求。 –

2

.net 3.5是.Net 2.0,增加了庫。只需安裝.Net 3.5並配置網站/ WebService如果使用(IIS 6)或應用程序池(如果使用IIS 7.5)

1
  1. 作爲測試,我下載了RestSharp。將其設置爲.NET 2.0編譯。刪除了未解析的程序集。
  2. 然後我加了LinqBridge.dll。 它抱怨沒有System.Xml.Linq
  3. 所以我下載了單聲道並打開了System.Xml.Linq_net2.0.csproj
  4. 刪除了參考System.Core.dll
  5. 新增LinqBridge.dll
  6. 創建缺少consts。文件,以便它具有Assembly cs文件的正確屬性。它編譯。
  7. 我又回到了RestSharp項目並添加到System.Xml.Linq參考我剛剛創建和編譯它
  8. 我還沒有測試,但我會盡快這樣做是爲了我的項目之一。