2013-11-21 6 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() 

Я Newb свернуться и используя HttpWebRequest в .NET, но преобразовали Curl команды .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, но я все еще получаю «плохой запрос (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. –

Смежные вопросы