リモートサーバーからエラーが返されました:(400)Bad Request error while running the following code。 HTTPサーバーにxmlファイルをアップロードしようとしています。私のxmlファイルにはユーザー名、パスワード、ドメインのタグが含まれており、接続しようとすると手動で接続できますが、このコードを介して接続しようとするときに同じ資格情報を使用すると、400 Bad Requestエラーが発生します。この問題を克服する方法を教えてください。ありがとう
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();
}
}`
POST not PUTを使用する必要がありますか?
通常、POSTはapplication/x-www-urlencoded
形式で使用されます。 REST APIを使用している場合は、PUTを使用する必要がありますか?ファイルをアップロードする場合は、おそらくmultipart/form-data
を使用する必要があります。正しいこと..
また、ログインに資格情報を使用していないようです-HttpWebRequestオブジェクトのCredentialsプロパティを使用して、ユーザー名とパスワードを送信する必要があります。
認証エントリが正しくないため、400 Bad request Errorがスローされます。
注:主にスペル変更による不正な認証エントリが原因で、400 Bad requestが発生します。
どのタイプの認証を使用しますか?前にBenが言ったプロパティを使用して資格情報を送信し、Cookieハンドラーをセットアップします。すでにリダイレクトを許可しています。リダイレクトが発生した場合は、Webサーバーを確認してください(NTLM認証は確実に行います)。リダイレクションがある場合、セッションCookieにほとんど保存されているセッションを保存する必要があります。