Le serveur distant a renvoyé une erreur
-
12-11-2019 - |
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?
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