Question

J'essaie de lire un flux JSON de données comme SO-

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;

Je ne sais pas si c'est le moyen de base de gagner l'authentification en passant dans le nom d'utilisateur et le mot de passe en tant que chaînes, mais une exécution j'obtiens l'erreur suivante-

Le serveur distant a renvoyé une erreur: (406) non acceptable.

Comment puis-je passer cela?

Était-ce utile?

La solution

Essayez une authentification d'en-tête au lieu de le faire par NetworkCreddedentials

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;
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top