繁体   English   中英

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

[英]In an Http Post request, what is the difference between submitting a form and sending content in the body

我一直在尝试调试与Web服务通信的问题,这使我提出了一个问题。 我想知道WebClient.UploadValues和WebClient.UploadData之间的区别是在C#中。 我在这里找到了答案.NET WebClient.UploadValues与WebClient.UploadData

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

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

那么表单发布数据和请求正文中的内容到底有什么区别? 它们实际上是不同的东西吗? http请求是否包含查询字符串,正文和AND表单数据?

谢谢!

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

上载值使用内容类型application / x-www-form-urlencoded提交正文。 我不完全确定默认情况下,UploadData使用哪种内容类型,但是您可以显式设置标头,以便使用您提供的任何内容。

当我尝试通过编写HttpWebRequest并将内容写入RequestStream来进行此操作时,我最初的困惑出现了。 我设置内容类型为时已晚。 我猜它需要在写入Stream之前指定。

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

好吧,所以我知道我的问题所在,我想我知道大部分问题的答案。

上载值使用内容类型application / x-www-form-urlencoded提交正文。 我不完全确定默认情况下,UploadData使用哪种内容类型,但是您可以显式设置标头,以便使用您提供的任何内容。

当我尝试通过编写HttpWebRequest并将内容写入RequestStream来进行此操作时,我最初的困惑出现了。 我设置内容类型为时已晚。 我猜它需要在写入Stream之前指定。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM