Удаленный сервер вернул ошибку - PullRequest
0 голосов
/ 24 февраля 2012

Я пытаюсь прочитать поток данных в формате JSON, например, так-

string Username = "username";
string Password = "password";

string BaseUrl = "url";

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(BaseUrl);
request.Credentials = new NetworkCredential(Username, Password);
request.ContentType = "application/json; charset=utf-8";
request.Headers["Authorization"] = "Basic " + authInfo;

using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{
    if (response.StatusCode != HttpStatusCode.OK) throw new Exception(string.Format("Server returned {0}\n {1}", response.StatusCode, response.ToString()));
    // Cheat and always expect utf-8
    string result = new StreamReader(response.GetResponseStream(), System.Text.Encoding.UTF8).ReadToEnd();

    richTextBox1.Text = result;

Я не уверен, что это основной способ получить аутентификацию, передавая имя пользователя и пароль в виде строк, однако при одном выполнении я получаю следующую ошибку:

Удаленный сервер возвратил ошибку: (406) Недопустимо.

Как мне пройти через это?

1 Ответ

1 голос
/ 24 февраля 2012

Попробуйте выполнить аутентификацию заголовка вместо NetworkCreddentials

public void SetBasicAuthHeader(WebRequest req, String userName, String userPassword)
{
  string authInfo = userName + ":" + userPassword;
  authInfo = Convert.ToBase64String(Encoding.Default.GetBytes(authInfo));
  req.Headers["Authorization"] = "Basic " + authInfo;
}
...