web-dev-qa-db-fra.com

HttpWebRequest-Le serveur distant a renvoyé une erreur: (400) requête incorrecte

Le serveur distant a renvoyé une erreur: (400) Erreur de requête incorrecte lors de l'exécution du code suivant: . J'essaie de télécharger un fichier xml sur le serveur http . Mon fichier xml contient une balise pour le nom d'utilisateur, mot de passe et domaine et lorsque j'essaie de me connecter manuellement, je peux le connecter, mais en utilisant les mêmes informations d'identification lorsque j'essaie de le connecter via ce code, j'obtiens une erreur de 400 requêtes incorrectes . Suggère-moi comment surmonter ce problème. ce numéro . Merci `

  public static void UploadHttp(string xml)     
    {

        string txtResults = string.Empty;
        try
        {
            string url = "http://my.server.com/upload.aspx ";
            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
            request.KeepAlive = false;
            request.SendChunked = true;
            request.AllowAutoRedirect = true;
            request.Method = "Post";
            request.ContentType = "text/xml";
            var encoder = new UTF8Encoding();
            var data = encoder.GetBytes(xml);
            request.ContentLength = data.Length;
            var reqStream = request.GetRequestStream();
            reqStream.Write(data, 0, data.Length);
            reqStream.Close();
            WebResponse response = null;
            response = request.GetResponse();
            var reader = new StreamReader(response.GetResponseStream());
            var str = reader.ReadToEnd();
        }
        catch (WebException ex)
        {
            if (ex.Status == WebExceptionStatus.ProtocolError)
            {
                HttpWebResponse err = ex.Response as HttpWebResponse;
                if (err != null)
                {
                    string htmlResponse = new StreamReader(err.GetResponseStream()).ReadToEnd();
                    txtResults = string.Format("{0} {1}", err.StatusDescription, htmlResponse);
                }
            }
            else
            {

            }
        }
        catch (Exception ex)
        {
            txtResults = ex.ToString();
        }
    }`
7
user1301587

Êtes-vous sûr que vous devriez utiliser POST et non pas PUT?

POST est généralement utilisé avec les formats application/x-www-urlencoded. Si vous utilisez une API REST, vous devriez peut-être utiliser PUT? Si vous téléchargez un fichier, vous devrez probablement utiliser multipart/form-data. Pas toujours, mais généralement, c'est la bonne chose à faire ..

De plus, vous ne semblez pas utiliser les informations d'identification pour vous connecter. Vous devez utiliser la propriété Credentials de l'objet HttpWebRequest pour envoyer le nom d'utilisateur et le mot de passe.

11
Ben

400 Bad request Une erreur sera générée en raison d'entrées d'authentification incorrectes.

  1. Vérifiez si votre URL d'API est correcte ou incorrecte. Ne pas ajouter ou ne pas ajouter d'espaces.
  2. Vérifiez que votre nom d'utilisateur et votre mot de passe sont valides. Veuillez vérifier toute erreur d’orthographe lors de la saisie.

Remarque: La plupart du temps, en raison d'entrées d'authentification incorrectes dues à des modifications orthographiques, il y aura 400 demandes incorrectes.

3
tamil

Quel type d'authentification utilisez-vous? Envoyez les informations d'identification à l'aide des propriétés mentionnées précédemment par Ben et configurez un gestionnaire de cookies . Vous autorisez déjà la redirection, vérifiez sur votre serveur Web si une redirection se produit (l'authentification NTLM le fait certainement). S'il existe une redirection, vous devez stocker la session, qui est principalement stockée dans un cookie de session.

0
YvesR