注册 登录
编程论坛 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_jiang2025-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_jiang2025-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
schtg2025-01-28 06:32
学习啦,谢谢!
#5
shizi02025-02-06 22:52
没有结果,自动结帖了...
1