好久没弄VB了,怎么用属性来读取HTTP请求?

xuguv 2014-05-05 04:02:42
类似如下的代码

Dim bytData() As Byte
Dim objHTTP As Object

Set objHTTP = CreateObject("MSXML2.XMLHTTP")
objHTTP.open "post", "http://xx.xx.com/a.axd?t=getInfo&id=3", False
objHTTP.send
If objHTTP.Status = 200 Then
bytData = objHTTP.responseBody
magbox StrConv(bytData, vbUnicode)
End If
Set objHTTP = Nothing

这里,StrConv(bytData, vbUnicode) 能获取到如下的值
{"page":0,"total":2,"rows":[{"id":01,"StudetID":24,"Number":"20100903","sex":0,"name":鍎跨"},
{"id":02,"StudetID":44,"Number":"20100904","sex":1,"name":绠$悊"}]}
这里,可以看到能读取两条学生记录。
现在的问题是,我能不能创建一个类,然后使用
类.属性=http返回值["id"]
这样的方式来获取值

第二个问题:怎么进行编码转换?貌似服务器用的是utf-8的格式。怎么变成Unicode?
...全文
111 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
threenewbee 2014-05-06
  • 打赏
  • 举报
回复
http://www.ediy.co.nz/vbjson-json-parser-library-in-vb6-xidc55680.html
赵4老师 2014-05-05
  • 打赏
  • 举报
回复
Private Declare Function MultiByteToWideChar Lib "kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByRef lpMultiByteStr As Any, ByVal cchMultiByte As Long, ByVal lpWideCharStr As Long, ByVal cchWideChar As Long) As Long
Private Declare Function WideCharToMultiByte Lib "kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpWideCharStr As Long, ByVal cchWideChar As Long, ByRef lpMultiByteStr As Any, ByVal cchMultiByte As Long, ByVal lpDefaultChar As Long, ByVal lpUsedDefaultChar As Long) As Long
'常用的代码页:
const cpUTF8   =65001
const cpGB2312 =  936
const cpGB18030=54936
const cpUTF7   =65000
Function MultiByteToUTF16(UTF8() As Byte, CodePage As Long) As String
    Dim bufSize As Long
    bufSize = MultiByteToWideChar(CodePage, 0&, UTF8(0), UBound(UTF8) + 1, 0, 0)
    MultiByteToUTF16 = Space(bufSize)
    MultiByteToWideChar CodePage, 0&, UTF8(0), UBound(UTF8) + 1, StrPtr(MultiByteToUTF16), bufSize
End Function

Function UTF16ToMultiByte(UTF16 As String, CodePage As Long) As Byte()
    Dim bufSize As Long
    Dim arr() As Byte
    bufSize = WideCharToMultiByte(CodePage, 0&, StrPtr(UTF16), Len(UTF16), 0, 0, 0, 0)
    ReDim arr(bufSize - 1)
    WideCharToMultiByte CodePage, 0&, StrPtr(UTF16), Len(UTF16), arr(0), bufSize, 0, 0
    UTF16ToMultiByte = arr
End Function

Private Sub Command1_Click()
    MsgBox MultiByteToUTF16(UTF16ToMultiByte("ab中,c", cpUTF8), cpUTF8)
End Sub

1,502

社区成员

发帖
与我相关
我的任务
社区描述
VB 网络编程
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧