httppost 远程服务器返回错误: (400) 错误的请求错误

本文介绍了一个使用C#实现的HTTP POST请求方法,该方法能够发送JSON格式的数据到指定URL,并接收响应。文章特别强调了字符编码设置的重要性,指出在使用UTF-8编码而非GB2312时可以避免因中文字符导致的错误请求问题。
public static string HttpPost(string Url, string postDataStr)
        {
            string result = "";
            try
            {
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
                request.Method = "POST";
                request.ContentType = "application/json";
                // request.ContentLength = Encoding.UTF8.GetByteCount(postDataStr);

                Stream myRequestStream = request.GetRequestStream();
                //如果为gb2312,参数中有汉字时会发生错误: 
                //远程服务器返回错误: (400) 错误的请求。      
                StreamWriter myStreamWriter =
                    new StreamWriter(myRequestStream, Encoding.GetEncoding("utf-8"));

                myStreamWriter.Write(postDataStr);
                myStreamWriter.Close();

                HttpWebResponse response = (HttpWebResponse)request.GetResponse();

                Stream myResponseStream = response.GetResponseStream();
                StreamReader myStreamReader = 
                    new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
                string retString = myStreamReader.ReadToEnd();
                result = retString;
                myStreamReader.Close();
                myResponseStream.Close();
            }
            catch (Exception ex)
            {
                LogHelper.Error("", ex);
            }
            return result;
        }

注意这一句

StreamWriter myStreamWriter =
                    new StreamWriter(myRequestStream, Encoding.GetEncoding("utf-8"));

如果为gb2312,参数中有汉字时会发生错误。远程服务器返回错误: (400) 错误的请求。


评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值