使用System.Net.WebClient发送HTTP POST

End*_*ono 32 .net vb.net webclient http

是否可以使用System.Net.WebClient发送带有一些表单数据的HTTP POST?

如果没有,是否有另一个像WebClient这样的库可以进行HTTP POST?我知道我可以使用System.Net.HttpWebRequest,但我正在寻找一些不那么冗长的东西.

希望它看起来像这样:

Using client As New TheHTTPLib
    client.FormData("parm1") = "somevalue"
    result = client.DownloadString(someurl, Method.POST)
End Using
Run Code Online (Sandbox Code Playgroud)

End*_*ono 63

基于@carlosfigueira的回答,我进一步研究了WebClient的方法并找到了UploadValues,这正是我想要的:

Using client As New Net.WebClient
    Dim reqparm As New Specialized.NameValueCollection
    reqparm.Add("param1", "somevalue")
    reqparm.Add("param2", "othervalue")
    Dim responsebytes = client.UploadValues(someurl, "POST", reqparm)
    Dim responsebody = (New Text.UTF8Encoding).GetString(responsebytes)
End Using
Run Code Online (Sandbox Code Playgroud)

关键部分是:

client.UploadValues(someurl, "POST", reqparm)
Run Code Online (Sandbox Code Playgroud)

它发送我键入的任何动词,它还帮助我创建一个正确的url编码表单数据,我只需要提供参数作为namevaluecollection.


car*_*ira 14

WebClient 没有对表单数据的直接支持,但您可以使用UploadString方法发送HTTP帖子:

Using client as new WebClient
    result = client.UploadString(someurl, "param1=somevalue&param2=othervalue")
End Using
Run Code Online (Sandbox Code Playgroud)

  • 我想表单数据需要转义:`"param1 ="&HttpUtility.UrlEncode("somevalue")` (2认同)