.NET HttpWebRequest oAuth 401 не авторизован
Мне нужно использовать веб-ресурс из приложения VB.NET. Я успешно получил токен доступа и готов использовать его для звонков на защищенный ресурс. Однако каждый раз, когда я вызываю защищенный ресурс, я получаю 401 Несанкционированный ответ, потому что поле Авторизация не было добавлено в заголовок.
Вот мой код
WebRequest = DirectCast(Net.WebRequest.Create(ApiUri), HttpWebRequest)
WebRequest.Method = "POST"
WebRequest.ContentType = "application/json"
WebRequest.ContentLength = Bytes.Length
Dim RequestStream As IO.Stream = WebRequest.GetRequestStream
RequestStream.Write(Bytes, 0, Bytes.Length)
RequestStream.Close()
WebRequest.Headers("Authorization") = "OAuth " & _
"oauth_version=""1.0""," & _
"oauth_nonce=""" & Nonce & """," & _
"oauth_timestamp=""" & TimeStamp & """," & _
"oauth_consumer_key=""" & ConsumerKey & """," & _
"oauth_token=""" & Token & """," & _
"oauth_signature_method=""HMAC-SHA1""," & _
"oauth_signature=""" & Signature & """"
WebResponse = DirectCast(WebRequest.GetResponse(), HttpWebResponse)
Затем я отслеживаю запрос с помощью Fiddler. Все, что я вижу в Fiddler, - это запрос с ответом 401, как показано ниже (исключая тела).
Запрос
POST ***url*** HTTP/1.0
Content-Type: application/json
Host: ***host***
Content-Length: 45
Connection: Keep-Alive
отклик
HTTP/1.0 401 Unauthorized
X-Powered-By: PHP/5.3.13
WWW-Authenticate: Basic realm="***realm***"
Content-type: application/json
Content-Length: 79
Connection: keep-alive
Date: Mon, 07 Jan 2013 01:13:22 GMT
Server: lighttpd/1.4.28
Везде япрочитав в интернете, указывает, что HttpWebRequest должен сначала вызвать сервер и получить ответ 401, как яЯ вижу здесь. Затем следует повторить попытку, добавив поле «Авторизация» в заголовок и получить ответ «200 OK». Эта вторая часть неэто случилось. Я не понимаю, как это работает правильно, или я делаю что-то не так?