一个在VB中与ASP页面交互的问题
服务器上有一个ASP页面test.asp,大致如下:
<%
Avg=request.querystring("avg")
if Avg<>"" then
'... 处理过程
response.write "OK"
else
response.write "Error."
end if
%>
在程序中想访问页面 http://www.mysite.com/test.asp?avg=xxx ,传递不同的值给参数avg。让ASP处理。
问题是能什么方案,最好是Windows API能实现我的要求?不要用WebBrowser,因为不想留下痕迹。最好有较详细的代码,网络这方面我很菜。
[解决办法]
Din xmlHttp As Object
Dim param As String
param = "你要传的参数"
Set xmlHttp = CreateObject("Microsoft.XMLHTTP")
xmlHttp.open "GET", "http://www.abc.com/test.asp?avg=" & param, True
xmlHttp.send (Null)
While xmlHttp.ReadyState <> 4
DoEvents
Wend
MsgBox "OK"
[解决办法]
可能是编码格式的原因
用UTF-8我测试了一下,可以用
ASP部分
'文件My.asp,文件保存的时候注意存成UTF-8格式的
<%
Response.Addheader "Content-Type","text/html; charset=utf-8"
Response.write Request("ID")
%>
Public Function GetPage(ByVal URL As String, Optional ByVal Data As String = "") As String
Dim XML As Object, T As Double
Set XML = CreateObject("WinHttp.WinHttpRequest.5.1")
XML.Option(6) = False
XML.Option(4) = 13056
If Len(Data) = 0 Then
XML.Open "GET", URL
XML.Send
Else
XML.Open "POST", URL
XML.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"
XML.SetRequestHeader "Content-Length", LenB(StrConv(Data, vbFromUnicode))
XML.Send Data
End If
GetPage = XML.ResponseText
Set XML = Nothing
End Function
'测试时可以调用
'debug.print GetPage("http://localhost/my.asp?id=测试")'GET方式
'或者
'debug.print GetPage("http://localhost/my.asp","id=测试")'POST方式