首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C#:HttpWebRequest POST数据不工作

C#中的HttpWebRequest类可以用于发送HTTP请求,并且可以通过POST方法发送数据。如果在使用HttpWebRequest的POST方法时遇到问题,可能是由于以下几个原因:

  1. 请求头设置不正确:在发送POST请求时,需要设置请求头中的Content-Type字段为"application/x-www-form-urlencoded"或"multipart/form-data",具体取决于发送的数据格式。例如,如果要发送表单数据,可以使用"application/x-www-form-urlencoded"。
  2. 数据编码问题:在发送POST请求时,需要将要发送的数据进行适当的编码。可以使用System.Text.Encoding类中的方法对数据进行编码,例如使用UTF-8编码可以使用Encoding.UTF8.GetBytes()方法。
  3. 数据长度设置不正确:在发送POST请求时,需要设置请求头中的Content-Length字段为要发送的数据的长度。可以使用Encoding类中的GetByteCount()方法获取数据的长度。
  4. 未正确写入请求数据:在发送POST请求时,需要将要发送的数据写入请求流中。可以使用HttpWebRequest的GetRequestStream()方法获取请求流,并使用StreamWriter将数据写入流中。

以下是一个示例代码,演示如何使用HttpWebRequest发送POST请求:

代码语言:csharp
复制
using System;
using System.IO;
using System.Net;
using System.Text;

public class Program
{
    public static void Main()
    {
        string url = "https://example.com/api";
        string postData = "name=John&age=30";

        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
        request.Method = "POST";
        request.ContentType = "application/x-www-form-urlencoded";
        byte[] data = Encoding.UTF8.GetBytes(postData);
        request.ContentLength = data.Length;

        using (Stream stream = request.GetRequestStream())
        {
            stream.Write(data, 0, data.Length);
        }

        using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
        {
            using (Stream responseStream = response.GetResponseStream())
            {
                using (StreamReader reader = new StreamReader(responseStream))
                {
                    string responseText = reader.ReadToEnd();
                    Console.WriteLine(responseText);
                }
            }
        }
    }
}

在上述示例中,我们使用HttpWebRequest类创建了一个POST请求,并设置了请求头的Content-Type字段为"application/x-www-form-urlencoded"。然后,我们将要发送的数据进行了UTF-8编码,并设置了请求头的Content-Length字段为数据的长度。接下来,我们获取了请求流,并将数据写入流中。最后,我们获取了响应,并读取了响应流中的数据。

请注意,这只是一个简单的示例,实际情况可能更加复杂。具体的应用场景和推荐的腾讯云相关产品和产品介绍链接地址,可以根据具体需求和情况进行选择。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

使用HttpWebRequest post数据时要注意UrlEncode

今天在用HttpWebRequest类向一个远程页面post数据时,遇到了一个怪问题,总是出现500的内部服务器错误,通过查看远程服务器的log,发现报的是“无效的视图状态”错误: ?...通过对比自己post的__VIEWSTATE和服务器接收到的__VIEWSTATE的值(通过服务器的HttpApplication的BeginRequest事件可以取到Request里的值),发现__VIEWSTATE...同样的,如果想post数据中有&、%等等,也会被服务器转义,所以我们在post数据的时候,需要先把数据UrlEncode一下。...修改后的post数据的示例代码如下,注意下面加粗的那句话: public HttpWebResponse GetResponse(string url) {...var req = (HttpWebRequest)WebRequest.Create(url); req.CookieContainer = CookieContainer;

1.7K30

【教程】贺岁教程之--C# get&post实例

说之前先扯一些关于webclient webclient的确能访问网页 但是不能设置超时和代理 导致访问一些页面就很卡= = 在这里就简单做个例子吧,比如访问百度首页: 基本的http知识也叙述了...操作的话要用Uploadxxx函数 传两个参数为url和提交数据 如果要返回二进制数据而不是字符串的话 要用到xxxData函数 用Byte()类型的变量接收即可 还有程序初始化的时候不要忘了加上...还是访问百度首页: 1.写出了这句你就成功了一半 HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("http://www.baidu.com...;//还是有就写 没有就不写 3.如果是 post 还要提交数据对吧 假设数据变量的名字是postdata 这样写 Stream st = req.GetRequestStream(); st.Write...不过还有几件事情要做 (1)异常处理 C#访问网页失败时候都会报异常 而如果你处理的话 就崩的跟狗似的了= = try..catch可以插在任何地方 单条语句 for内部 或者整个函数体 总之控制流程还是很方便的

70030

C# HTTP系列9 GET与POST示例

应用程序中使用HTTP协议和服务器交互主要是进行数据的上传与下载,最常见的方式是通过 GET 和 POST 两种方式来完成。本篇介绍 C# HttpWebRequest 如何使用这两种方式来实现。...提交数据方式2 POST方式 POST 方式通过在页面内容中填写参数的方法来完成数据的提交, ?...04 HttpWebRequest 提交数据方式4 POST方式提交中文数据 POST 方式通过在页面内容中填写参数的方法来完成数据的提交,由于提交的参数中可以说明使用的编码方式,所以理论上能获得更大的兼容性...HttpWebRequest 请求通用方法 (包含body数据)POST、GET请求 1 /// 2 /// HTTP-GET方法,(包含body数据)。...方法,(包含body数据)。

1.2K20

C# HTTP系列13 以form-data方式上传多个文件以及键值对集合到远程服务器

="UserManageHandler.ashx" method="post" enctype="multipart/form-data"> 名称: <input...multipart/form-data 数据格式介绍 1、使用Postman模拟上述功能(上传附件) ? 点击【Code】按钮,打开如下窗体 ? 2、只上传一个附件 ?...上面提到的这两种 POST 数据的方式,都是浏览器原生支持的,而且现阶段标准中原生 表单也只支持这两种方式(通过 元素的 enctype 属性指定,默认为 application...C# 通用方法实现 multipart/form-data 方式上传附件与请求参数 清楚了 multipart/form-data 的数据请求格式之后,使用C#HttpWebRequest 与 HttpWebResponse...如果某个文件不存在,则忽略上传 7 /// 请求时表单键值对数据

2.6K30

C# HTTP系列12 以form-data方式上传键值对集合到远程服务器

系列目录 【已更新最新开发文章,点击查看详细】 使用multipart/form-data方式提交数据与普通的post方式有一定区别。...另外还需要规定一个内容分割符用于分割请求体中的多个post的内容,如文件内容和文本内容,只有这样服务端才能正常解析数据。...但是,multipart/form-data的基础还是post,它是由post方法来实现的。 ? 点击【Code】按钮,打开如下窗体: ?...在某些应用场景下,表单数据以键值对集合存储,然后将键值对集合上传到远程服务器。...2、如果添加了C#中的某些关键字作为集合的键则会报错,解决方法是,给关键字添加前缀或者后缀,在解析时再去除前缀或者后缀。 ? ?

3.4K10

C# 实现开心网外挂(一)

最近越来越火的开心001,功能愈加增多,操作也愈加繁琐,因此,何不自己动手,制作一个简单的小外挂来完成一些简单重复的工作呢?...其实实现开心网外挂十分简单,特别是使用C#这种已经封装得比较好的语言,只需略加修饰,就可以完成符合自己要求的外挂和完成基本的功能。现在就用C#这种语言带着大家一起来制作一个简单的开心网外挂吧。...myRequest = (HttpWebRequest)WebRequest.Create( “ http://www.kaixin001.com/login/login.php “...); 8 myRequest.Method = “ POST “ ; 9 myRequest.ContentType...本站仅提供信息存储空间服务,拥有所有权,承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

88220

wcf webHttpBinding Post数据量提交 ios c#客户端

一直在为安卓和苹果写服务,刚开始的时候全用的Get请求用url传所有的参数,由于url长度的限制大的数据量 无法传到服务器,提交图片什么的就更不用说了,后来用的POST请求,记录一下,做了一个很简单的小例子...: c#源代码提供大家下载 10Solution4.rar ios代码 IOSHttpPostDemo.rar  开始做吧!...形式接收的Url只要一个参数就是传过来的byte的长度 那个Stream类型的台数就是Post过来的数据 建一个类实现这个接口MyWcfServerMethodFace public class MyWcfServerMethodFace...request = (HttpWebRequest)HttpWebRequest.Create("http://LocalHost:7789/MySericeDemo/postMostStr/" +...好了,简单的小例子就ok了 c#代码:10Solution4.rar ios代码 IOSHttpPostDemo.rar

866100

国内主流快递公司快递单号查询API接口对接指南

接口区分开发语言,支持Java,C#,PHP,Python,net、go等多种开发语言的程序调用 QQ截图20210519181756.png RequestData=%7b%27OrderCode...版本) 10.1,请求数据包结构 10.2,C#调用代码示例 //电商ID string eEBusinessID = "test1617571"; //电商加密私钥,快递鸟提供,注意保管,不要泄漏...请求方式 返回轨迹数据 string post = SendPost(reqURL, postStr); //获取到的post数据就是快递鸟返回的完整报文,接下来自己写一个解析json的方法就能获取到里面的字段信息...byteData = Encoding.GetEncoding("UTF-8").GetBytes(postData.ToString()); try { HttpWebRequest...request = (HttpWebRequest)WebRequest.Create(url); request.ContentType = "application/x-www-form-urlencoded

1.7K00

C#post方式调用struts rest-plugin service的问题

struts2: 玩转 rest-plugin 一文中,学习了用struts2开发restful service的方法,发现用c#post方式调用时各种报错,但java、ajax,包括firefox...webReq = (HttpWebRequest)WebRequest.Create(new Uri(postUrl)); 30 webReq.Method = "POST"; 31...而c#中如果以post方法请求url时,不论是HttpWebRequest还是WebClient,默认都会添加expect = 100-continue的头信息,因此c#调用时会报错,而firefox的...可以参见园友的文章:http之100-continue,大意是说: 如果客户端向服务端post数据,考虑到post数据可能很大,搞不好能把服务器玩坏(或者超时),所以,有一个贴心的约定,客户端先发一个...except头信息给服务器,问下:我要post数据了,可能很大,你想想要不要收,采用什么措施收?

98590
领券