在Http Post请求中,提交表单和在正文中发送内容有什么区别

时间:2014-02-26 19:01:10

标签: c# http http-post webclient

我一直在尝试调试与Web服务通信的问题,这引出了一个问题。我想知道WebClient.UploadValues和WebClient.UploadData之间的区别在于C#。我在.NET WebClient.UploadValues vs WebClient.UploadData

找到了答案

答案基本上是UploadData在请求正文中提交内容,其中UploadValues的作用类似于从表单提交值。我原以为他们是一回事。当您在帖子正文中提交内容时,它通常看起来像“key = value& key2 = value2 ...”。 (当内容类型为application / x-www-form-urlencoded时)

在我注意到某些事情之前,我认为它们是一样的。使用UploadValues给我一个完全不同于UploadData的结果。在我正在与之通信的服务的情况下,使用UploadValues成功并且UploadData返回错误“请求格式无效”。

那么表单发布数据与请求正文中的内容究竟有什么区别?他们真的是不同的东西吗? http请求是否包含查询字符串,正文和表单数据?

谢谢!

更新好的,所以我知道我的问题是什么,我想我知道大部分问题的答案。

上传值提交内容类型为application / x-www-form-urlencoded的正文。我不完全确定默认情况下为UploadData使用了什么内容类型,但是您可以明确地设置标题,这样它就可以使用您提供的任何内容。

当我尝试通过编写HttpWebRequest并将内容写入RequestStream来实现这一点时,我最初产生了混淆。我设置内容类型太晚了。我想在写入Stream之前需要指定它。

表格数据在请求正文中发送。

1 个答案:

答案 0 :(得分:0)

好的,所以我知道我的问题是什么,我想我知道我的大部分问题的答案。

上传值提交内容类型为application / x-www-form-urlencoded的正文。我不完全确定默认情况下为UploadData使用了什么内容类型,但是您可以明确地设置标题,这样它就可以使用您提供的任何内容。

当我尝试通过编写HttpWebRequest并将内容写入RequestStream来实现这一点时,我最初产生了混淆。我设置内容类型太晚了。我想在写入Stream之前需要指定它。

表格数据在请求正文中发送。