首页 > Web开发 > 详细

关于 Http 请求可用的2个方法

时间:2020-05-09 19:36:15      阅读:63      评论:0      收藏:0      [点我收藏+]

方法1:

‘参数: strMethod =(Post,Get)     strUrl=(网址)   strJson=(普通字符串或json字符串)
Public Function PostData(ByVal strMethod As String, ByVal StrUrl As String, Optional ByVal strJson As String) As String
    Dim HTTP
   ‘两者只有版本的区别,能用高版本的就用高版本的MSXML2吧,建议用MSXML2 Set HTTP
= CreateObject("MSXML2.XMLHTTP") Set HTTP = CreateObject("Microsoft.XMLHTTP") With HTTP .Open strMethod, StrUrl, True
     ‘‘请求头类型 .SetRequestHeader
"Content-Type", "application/x-www-form-urlencoded" .setRequestHeader "Content-Type", "application/json" .send (strJson) ‘比较奇葩的 send 这个方法的参数 必须用括号括住,不然post请求会提示错误 End With Do While HTTP.ReadyState <> 4 DoEvents Loop PostData = HTTP.ResponseText Set HTTP = Nothing End Function

方法2:

‘从网上找的快被转烂的方法,测试可以用,留作备用吧PostData:参数: StrUrl --------------------接受提交的URLStrData   -----------------需要提交的数据,如JSON字串,或者登录字串 "user=xxx&psw=xxx"varAsyncX  --------------设置工作模式为同步或异步,true(异步)或false(同步),通常使用异步方式。CodePageX ------------对返回数据的解码编码,字符串:GB2312或UTF-8==================================================
Public Function PostData3(ByVal StrUrl As String, ByVal StrData As String, varAsyncX As Boolean, CodePageX As String) As Variant
  On Error GoTo ERR:ByVal DataStic As DataEnum,
    
  Dim XMLHTTP As Object, GetBody
  Dim DataS As String  Dim DataB() As Byte
    
  Set XMLHTTP = CreateObject("Microsoft.XMLHTTP")
    Set XMLHTTP = CreateObject("MSXML2.XMLHTTP")
  XMLHTTP.Open "POST", StrUrl, varAsyncX True  XMLHTTP.setRequestHeader "Content-Length", Len(PostData)
  XMLHTTP.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"
  XMLHTTP.send (StrData)
    If varAsyncX Then
        Do Until XMLHTTP.ReadyState = 4
          DoEvents
        Loop
    End If
  
    GetBody = XMLHTTP.ResponseBody
    
    If Len(GetBody) > 1 Then
        GetBody = BytesToStr(GetBody, CodePageX)
        PostData3 = GetBody
    End If
  ------------------------------------释放空间
exitX:
  Set XMLHTTP = Nothing
  Exit Function
ERR:
  PostData3 = ""
  Resume exitX Next
End Function

Public Function BytesToStr(strBody, CodeBase)
Dim objStream
Set objStream = CreateObject("Adodb.Stream")
With objStream
    .Type = 1
    .Mode = 3
    .Open
    .Write strBody
    .Position = 0
    .Type = 2
    .Charset = CodeBase "GB2312" 
    BytesToStr = .ReadText
    .Close
End With
Set objStream = Nothing
End Function

 

关于 Http 请求可用的2个方法

原文:https://www.cnblogs.com/boentouch/p/12859453.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!