13

リモートサーバーがエラーを返しました:(400)次のコードの実行中に不正な要求エラーが発生しました。httpサーバーにxmlファイルをアップロードしようとしています。私のxmlファイルにはユーザー名、パスワード、ドメインのタグが含まれており、接続しようとすると手動で接続できますが、このコードを介して接続しようとすると同じクレデンシャルを使用すると、400BadRequestエラーが発生します。この問題を解決する方法を教えてください。ありがとう`

  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();
        }
    }`
4

4 に答える 4

13

PUT ではなく POST を使用する必要がありますか?

POST は通常、application/x-www-urlencodedフォーマットで使用されます。REST API を使用している場合は、PUT を使用する必要がありますか? ファイルをアップロードする場合は、おそらくmultipart/form-data. 常にではありませんが、通常、それは正しいことです..

また、資格情報を使用してログインしていないようです。HttpWebRequest オブジェクトの Credentials プロパティを使用して、ユーザー名とパスワードを送信する必要があります。

于 2013-01-10T16:46:56.457 に答える
3

認証エントリが正しくないため、400 Bad request エラーがスローされます。

  1. API URL が正しいか間違っているかを確認してください。スペースを追加したり先頭に追加したりしないでください。
  2. ユーザー名とパスワードが有効であることを確認します。スペルミスがないか確認して入力してください。

注: ほとんどの場合、スペルの変更により不正な認証エントリが発生します。400 不正な要求が発生します。

于 2015-10-14T09:33:46.973 に答える
0

どのタイプの認証を使用していますか? ベンが前に言ったプロパティを使用して資格情報を送信し、Cookie ハンドラーをセットアップします。既にリダイレクトを許可しています。リダイレクトが発生する場合は、Web サーバーを確認してください (NTLM 認証は確実に行われます)。リダイレクトがある場合は、ほとんどがセッション Cookie に保存されているセッションを保存する必要があります。

于 2013-01-10T16:57:09.353 に答える