首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Visual Basic 2010 / .NET | Web的快速POST请求

Visual Basic 2010 / .NET | Web的快速POST请求
EN

Stack Overflow用户
提问于 2011-04-02 01:08:01
回答 3查看 2.1K关注 0票数 0

我正在编写一个程序,必须通过API风格的调用(POST请求)与PHP /网络为基础的后端通信。我目前拥有的代码非常慢-每个请求需要2-3秒-有没有更快的方法或其他方法可以用来加速当前请求的方法:

代码语言:javascript
复制
Function PostData(ByRef Data() As PostData, ByVal URL As String)
    Dim Requester As HttpWebRequest = HttpWebRequest.Create(URL)
    Requester.Method = "post"
    'Requester.Proxy = New System.Net.WebProxy("localhost", 1234)
    'Requester.
    Dim ASCIIEncoding As Encoding = New ASCIIEncoding
    Dim DataString As String = "apirequest=true"

    For Each DataItem As PostData In Data
        DataString = DataString & "&" & DataItem.Key & "=" & DataItem.Value
    Next

    DataString = Right(DataString, Len(DataString) - 1)

    Dim RawData() As Byte = ASCIIEncoding.GetBytes(DataString)

    Requester.Method = "POST"
    Requester.ContentType = "application/x-www-form-urlencoded"
    Requester.ContentLength = RawData.Length
    Requester.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6"
    Dim NewStream As Stream = Requester.GetRequestStream()

    NewStream.Write(RawData, 0, RawData.Length)
    NewStream.Close()

    Dim ResponseStreamReader As StreamReader = New StreamReader(Requester.GetResponse().GetResponseStream())

    Return ResponseStreamReader.ReadToEnd()
End Function
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-04-02 01:12:25

您应该将响应和StreamReader包装在Using语句中,以确保在处理完它们后立即将它们处理掉。

此外,您应该直接写入GetRequestStream (使用StreamWriter),而不是在循环中手动连接字符串。

然而,它慢的真正原因是你的互联网连接和/或你的服务器端脚本太慢了。

让它们更快。

票数 1
EN

Stack Overflow用户

发布于 2011-04-02 04:53:14

我记得在不使用代理的情况下,将Proxy属性设置为null。

我仍然同意字符串连接和处理的建议,并且认为使用WebClient代码会容易得多。

票数 0
EN

Stack Overflow用户

发布于 2022-02-01 03:57:56

代码语言:javascript
复制
Dim urlphp As String = "" & dominio & "" & carpetanoti & "/demanda_alta.php"
Dim Conexion As HttpWebRequest = CType(WebRequest.Create(urlphp), HttpWebRequest)
Conexion.Method = "POST"
Conexion.ContentType = "application/x-www-form-urlencoded"
Dim POST_DATA As String = ("&cTitulo=" & "Te necesitamos!!" & "&cMensaje=" & "ALTA DEMANDA TENEMOS DOMICILIOS PARA TI" & "")
Dim byteArray() As Byte = Encoding.UTF8.GetBytes(POST_DATA)
Conexion.ContentLength = byteArray.Length
Dim FLUJO As Stream = Conexion.GetRequestStream()
FLUJO.Write(byteArray, 0, byteArray.Length)
FLUJO.Close()
Dim Response As HttpWebResponse = Conexion.GetResponse()
FLUJO = Response.GetResponseStream()
Dim LEER As New StreamReader(FLUJO)
Dim ServerResponse As String = LEER.ReadToEnd()
''MsgBox("Notificación enviada exitosamente", MsgBoxStyle.Information)
LEER.Close()
FLUJO.Close()
Response.Close()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5516566

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档