post数据时报错:远程服务器返回错误: (400) 错误的请求。

网上查了多种方法,有不少说法,报400说是传的数据格式不对,最后的结论确实是数据格式不对。

Content_Type为:application/json,配的数据格式有些麻烦,特别数多层,单层还好。例如,我本传的数据是这个的json:

{
  "key1": {
    "key11": "value11",
    "key12": "value12"
  },
  "key2": "value2"
}

这时候,postData应该为:{"client":"{\"machineId\":\"1040\",\"value\":\"1\"}","userId":"5","temp":"91D3EB4181237881A227DF29B304738D"}

c#里赋值写法为:

string _postData = "{\"client\":\"{\\\"machineId\\\":\\\"1040\\\",\\\"value\\\":\\\"1\\\"}\",\"userId\":\"5\",\"temp\":\"91D3EB4181237881A227DF29B304738D\"}";

post的方法:

  protected string PostUrl(string url, string postData)
    {
        try
        {
            HttpWebRequest webrequest = (HttpWebRequest)HttpWebRequest.Create(url);
            webrequest.Method = "post";
            webrequest.ContentType = "application/json;charset=utf-8";
            byte[] postdatabyte = Encoding.UTF8.GetBytes(postData);
            webrequest.ContentLength = postdatabyte.Length;
            Stream stream;
            stream = webrequest.GetRequestStream();
            stream.Write(postdatabyte, 0, postdatabyte.Length);
            stream.Close();
            using (var httpWebResponse = webrequest.GetResponse())
            using (StreamReader responseStream = new StreamReader(httpWebResponse.GetResponseStream()))
            {
                String ret = responseStream.ReadToEnd();
                string result = ret.ToString();
                return result;
            }
        }
        catch (Exception ex)
        {
            HttpContext.Current.Response.Write(ex);
            return "";
        }
    }

如果posData的格式写错,运行后报错(using (var httpWebResponse = webrequest.GetResponse())):System.Net.WebException: 远程服务器返回错误: (400) 错误的请求。 在 System.Net.HttpWebRequest.GetResponse() 。

原文地址:https://www.cnblogs.com/Iven-zhang/p/10161648.html

时间: 2024-12-11 01:05:37

post数据时报错:远程服务器返回错误: (400) 错误的请求。的相关文章

WCF LIST 传输大数据,远程服务器返回了意外响应 400

WCF传输LIST 大数据量 出现 远程服务器返回了意外响应 400 错误提示. 出现这个问题,各种搜索,都没有解决问题,而且有些都比较复杂,自己琢磨了一下,其实也不是很难,好了,看下面方案.解决方案:在web.config(host)端<system.serviceModel>节中, 增加 services 节 如下:<services>      <service behaviorConfiguration="app.dcgkbehavior" nam

C# FTP远程服务器返回错误:(550) 文件不可用(例如,未找到文件,无法访问文件)

今天用代码删除FTP服务器上的目录时候,报错:远程服务器返回错误:(550) 文件不可用(例如,未找到文件,无法访问文件). 习惯性的google,不外乎以下几点: 1.URL路径不对,看看有没有多加空格,或者大小写问题 2.权限是否足 3.需要反复连接的时候,如GetFileList,需要递归获得所有文件,keepAlive则设成false,一个查询请求完了后就关闭. 照做后问题依旧,很苦恼! 然后在FTP上建立了一个空目录,删除之,竟然能删除了.... 所以,找到原因:删除目录,该目录下不能

NuGet在Push的时候提示“远程服务器返回错误:(403)已禁用”问题解决

在使用NuGet把包push到nuget官网的时候,提示了如下信息: Failed to process request. 'The specified API key is invalid or does not have permission to access the specified package.' 远程服务器返回错误:(403)已禁用 解决方法: 1.检查是否已经设置过apikey,可以使用设置apikey的命令设置一下,在进行push,如果在设置的时候有错误提示,可以尝试使用管

ORA-01843的错误 插入日期数据时报错

当我在SQLPLUS执行 : INSERT INTO customers ( customer_id, first_name, last_name, dob, phone ) VALUES ( 5, 'Doreen', 'Blue', '20-MAY-1970', NULL ); 出现 "ORA-01843: 无效的月份 "这个错误. Google之后找到下面的这篇文章,其中说先执行alter session set nls_date_language='american'  然后再执

HttpWebResponse远程服务器返回错误: (500) 内部服务器错误。

现象 我们编码实现请求一个页面时,请求的代码类似如下代码: 1 HttpWebRequest req = (HttpWebRequest)WebRequest.Create(strUrl); 2 req.UserAgent = "MSIE6.0"; 3 req.Method = "GET"; 4 HttpWebResponse res = (HttpWebResponse)req.GetResponse(); 5 StreamReader sr = new Stre

写自动更新程序出现&quot;远程服务器返回错误: (404) 未找到&quot;

在win2003配置后,在客户端运行时能够下载exe和dll文件,但是在更新lib文件时总是报“远程服务器返回错误: (404) 未找到”错误,不明白咋会出现这个问题,去网上一查,发现以下解决办法: 发现如下方法可以解决该问题: 给网站添加MIME的类型,如下: .*application/octet-stream 按照说法做,在服务器上打开iis,找到自动升级的文件夹,查看属性,选择”HTTP头“选项卡,发现有个MIME映射选项,单击”文件类型“,再单击”新类型”,在关联扩展名里添加“.*”,

远程服务器返回错误: 404错误、远程服务器返回错误:500错误、 HttpWebResponse远程服务器返回错误:(404、500) 错误。

现象 我们编码实现请求一个页面时,请求的代码类似如下代码: HttpWebRequest req = (HttpWebRequest)WebRequest.Create(strUrl);req.UserAgent = "MSIE6.0";req.Method = "GET";HttpWebResponse res = (HttpWebResponse)req.GetResponse();StreamReader sr = new StreamReader(res.G

fft 远程服务器返回错误 550返回码

"远程服务器返回错误:(550) 文件不可用(例如,未找到文件,无法访问文件)"时,可能是如下原因: 1.URL路径不对,看看有没有多加空格,或者大小写问题 2.权限是否足 3.需要反复连接的时候,如GetFileList,需要递归获得所有文件,keepAlive则设成false,一个查询请求完了后就关闭. 4.当你的路径名字含有 # 字符的时候也会出错,要特别处理含有#的文件和文件夹,原则上禁止这种字符

HttpWebResponse远程服务器返回错误: (500) 内部服务器错误

现象 我们编码实现请求一个页面时,请求的代码类似如下代码: HttpWebRequest req = (HttpWebRequest)WebRequest.Create(strUrl);req.UserAgent = "MSIE6.0";req.Method = "GET";HttpWebResponse res = (HttpWebResponse)req.GetResponse();StreamReader sr = new StreamReader(res.G