首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VBA WinHttpRequest 5.1响应文本未满

VBA WinHttpRequest 5.1响应文本未满
EN

Stack Overflow用户
提问于 2018-01-08 21:42:17
回答 1查看 1.5K关注 0票数 0

目前,我正在使用WinHttpRequest从data应用程序中提取数据。我成功地完成了各种任务,但我偶然发现了一个奇怪的问题。.ResponseText中缺少某些数据。我已经手动完成了这项任务,响应主体是:

代码语言:javascript
复制
   <?xml version="1.0" encoding="UTF-8"?>
 <mxRoot><rows><r ra="t" o="20336.41905.48904.52482" p="" id="0,0" level="0" filter="false" t="1515418285649" r="" d="" hc="">
 <c a="91664964" i="images/iconSmallPart.png">91664964</c><c a="001">001</c> :ConfidentialInformations: </rows>

当我用VBA做同样的事情时,答案会更短:

代码语言:javascript
复制
 <?xml version="1.0" encoding="UTF-8"?>
 <mxRoot><rows><r ra="t" o="20336.41905.39945.55654" p="" id="0,0" level="0" filter="false" /></rows>

这就像是我在回答中缺少了一些深度。下面是我使用的代码。

代码语言:javascript
复制
Set MyRequest = CreateObject("WinHTTP.WinHTTPrequest.5.1")

MyRequest.Open "POST", URL

MyRequest.SetRequestHeader "Host", "plmprod.pg.com"
MyRequest.Option(WinHttpRequestOption_EnableRedirects) = False
MyRequest.SetRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 6.1; rv:57.0) Gecko/20100101 Firefox/57.0"
MyRequest.SetRequestHeader "Accept", "*/*"
MyRequest.SetRequestHeader "Accept-Language", "pl,en-US;q=0.7,en;q=0.3"
MyRequest.SetRequestHeader "Accept-Encoding", "gzip, deflate, br"
MyRequest.SetRequestHeader "Referer", "RefererURL"
MyRequest.SetRequestHeader "Content-Type", "undefined"
MyRequest.SetRequestHeader "charset", "UTF-8"
MyRequest.SetRequestHeader "csrfTokenName", "ENO_CSRF_TOKEN"
MyRequest.SetRequestHeader "ENO_CSRF_TOKEN", CSRFTOKEN
MyRequest.SetRequestHeader "Cookie", "testcookie=1; " & JSESSION & "; " & SERVERID
MyRequest.SetRequestHeader "Connection", "keep-alive"
MyRequest.SetRequestHeader "Content-Length", "0"
MyRequest.Send
MyRequest.WaitForResponse
Debug.Print MyRequest.ResponseText

有人知道问题出在哪里吗?即使我找到了类似的主题,也没有明确的答案。

EN

回答 1

Stack Overflow用户

发布于 2018-01-09 00:18:56

浏览该类型库,有一些要捕获的事件,OnResponseDataAvavilableOnResponseStartOnResponseFinished。试试这些,看看它们是否能处理你的数据块。

一些框架代码,您的请求变量需要在类模块中定义,以便编译WithEvents关键字

代码语言:javascript
复制
Option Explicit

Private WithEvents oReq As WinHttp.WinHttpRequest

Private Sub oReq_OnResponseDataAvailable(Data() As Byte)

    Dim sThisChunk As String
    sThisChunk = StrConv(Data(), vbUnicode)

End Sub

Private Sub oReq_OnResponseFinished()

End Sub

Private Sub oReq_OnResponseStart(ByVal Status As Long, ByVal ContentType As String)

End Sub
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48151535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档