13

我收到远程服务器返回错误:(400)运行以下代码时出现错误请求。我正在尝试在 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();
        }
    }`
4

4 回答 4

13

你确定你应该使用 POST 而不是 PUT 吗?

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 Bad request。

于 2015-10-14T09:33:46.973 回答
0

您使用什么类型的身份验证?使用 Ben 之前所说的属性发送凭据并设置 cookie 处理程序。您已经允许重定向,如果发生任何重定向,请检查您的网络服务器(NTLM 身份验证确实如此)。如果有重定向,您需要存储会话,该会话主要存储在会话 cookie 中。

于 2013-01-10T16:57:09.353 回答
0

//使用“ASCII”或尝试使用其他编码方案而不是“UTF8”。

using (StreamWriter postStream = new StreamWriter(request.GetRequestStream(), System.Text.Encoding.UTF8))
{
    postStream.Write(postData);
    postStream.Close();
}
于 2022-01-20T11:59:44.393 回答