编程论坛
注册
登录
编程论坛
→
VFP论坛
vfp可以创建XMLHttpRequest对象吗?不是Msxml2.XMLHTTP或winHttp.WinHttpRequest
shizi0
发布于 2025-01-27 14:47, 238 次点击
Newobject([Msxml2.XMLHTTP.6.0])有较多局限,据说XMLHttpRequest兼容性更好。vfp如何创建XMLHttpRequest对象?
[此贴子已经被作者于2025-1-27 22:39编辑过]
4 回复
#2
sam_jiang
2025-01-27 17:00
在 VFP 中,可以使用 CREATEOBJECT 函数创建 MSXML2.XMLHTTP 或 Microsoft.XMLHTTP 对象。
loXMLHTTP = CREATEOBJECT("MSXML2.XMLHTTP") && 推荐使用 MSXML2.XMLHTTP
如果 MSXML2.XMLHTTP 不可用,可以尝试使用 Microsoft.XMLHTTP:
loXMLHTTP = CREATEOBJECT("Microsoft.XMLHTTP")
以下是一个完整的示例,演示如何发送 GET 请求并处理响应:
* 创建 XMLHttpRequest 对象
loXMLHTTP = CREATEOBJECT("MSXML2.XMLHTTP")
* 定义事件处理类
DEFINE CLASS EventHandler AS Custom
PROCEDURE onreadystatechange
IF loXMLHTTP.readyState = 4 && 请求完成
IF loXMLHTTP.status = 200 && 请求成功
lcResponse = loXMLHTTP.responseText
MESSAGEBOX(lcResponse) && 显示响应内容
ELSE
MESSAGEBOX("请求失败,状态码:" + TRANSFORM(loXMLHTTP.status))
ENDIF
ENDIF
ENDPROC
ENDDEFINE
* 设置事件处理程序
loXMLHTTP.onreadystatechange = CREATEOBJECT("EventHandler")
* 发送 GET 请求
loXMLHTTP.Open("GET", "https://, .T.)
loXMLHTTP.Send()
#3
sam_jiang
2025-01-27 22:52
回复 2楼 sam_jiang
还可以用CREATEOBJECT("WinHttp.WinHttpRequest.5.1")
是我的一段代码中截取出来的。。。
FUNCTION uploadfile
PARAMETERS lcapiurl,lcheader,lcbody
LOCAL loHTTP, lcResponse
loHTTP = CREATEOBJECT("WinHttp.WinHttpRequest.5.1")
*lohttp=NEWOBJECT("microsoft.xmlhttp")
loHTTP.SetProxy(2, "127.0.0.1:8888") && 设置代理方便fiddler抓包调试,完成后可以注释掉
loHTTP.Open("POST", lcapiurl, .F.)
*loHTTP.SetRequestHeader("Accept-Encoding","gzip, deflate, br")
*loHttp.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36")
loHTTP.SetRequestHeader("Content-Type", lcHeader)
*loHTTP.SetRequestHeader("Content-Length", LEN(lcbody))
loHTTP.Send(lcBody)WAIT "数据上传中。。。" WINDOW AT 30,150 TIMEOUT 5
lcresponse=lohttp.responsetext
RELEASE lohttp
return lcresponse
ENDFUNC
#4
schtg
2025-01-28 06:32
学习啦,谢谢!
#5
shizi0
2025-02-06 22:52
没有结果,自动结帖了...
1