2013-11-21 184 views
0

您好以下cURL命令,我想轉換爲VB.NET或C#。轉換cURL命令爲.NET

curl https://api.box.com/2.0/users \-H "Authorization: Bearer ACCESS_TOKEN" \ -d '{"login": "[email protected]", "name": "Ned Stark"}' \ -X POST 

我試圖在VB.NET如下:

Dim url As String = "https://api.box.com/2.0/users" 
Dim wrq = CType(Net.WebRequest.Create(url), HttpWebRequest) 
Dim postString As String = "[email protected]&name=Ned Stark" 

wrq.Headers.Add("Authorization: Bearer " & o2ses.AccessToken) 
wrq.Method = "POST" 
wrq.ContentType = "application/x-www-form-urlencoded" 
wrq.ContentLength = postString.Length 

Dim wrqWriter As New StreamWriter(wrq.GetRequestStream()) 
wrqWriter.Write(postString) 
wrqWriter.Close() 

Dim responseReader As New StreamReader(wrq.GetResponse().GetResponseStream()) 
Dim responseData As String = responseReader.ReadToEnd() 

我捲曲對於新手,並在.NET中使用HttpWebRequest的,但轉化捲曲命令之前,.NET(感謝到這個網站:)),但沒有在他們的-d選項,所以我有點失落。當執行下面的行時,它會一直返回錯誤400(錯誤的請求)。

Dim responseReader As New StreamReader(wrq.GetResponse().GetResponseStream()) 

我覺得它有什麼數據我送(即它沒有得到適當的「登錄」和「名」參數需要)來完成。

任何幫助表示讚賞。如果需要,我可以嘗試提供更多信息。如前所述,我是一個新手,所以我會盡我所能。

謝謝!

+0

你的後弦應該URL編碼(見HttpUtility.UrlEncode()或這裏的比如http:/ /stackoverflow.com/a/14703032/99256)。 –

+0

感謝您的回覆和鏈接。我修改了代碼,將'poststring'定義爲stringbuilder並附加了urlencoded數據,但我仍然從Web服務中收到'錯誤的請求(400)'。 – user1146024

回答

0

我不知道vb.net,但我認爲授權頭應該是這樣的:

wrq.Headers.Add(HttpRequestHeader.Authorization, "Bearer " & o2ses.AccessToken); 
+0

感謝您的回覆。我改變了建議的路線,但結果仍然相同。 – user1146024

+0

我會建議然後安裝Fiddler(http://fiddler2.com/home)並查看來自您的應用程序的請求(http://stackoverflow.com/questions/935181/how-to-view-the-headers -sent逐HttpWebRequest的)。通過這種方式,您可以比較.NET應用程序中的頭文件和curl中的頭文件。 –