从VBA调用REST API - "与服务器的连接异常终止"
我正在尝试从Excel VBA恢复API. 我已经在C#中有一个工作版本: //Request Auth Token var client = new RestClient("https://api.xxx.com/exp/oauth2/v1/access_token_cors"); var request = new RestRequest(Method.POST); request.AddHeader("Content-Type", "application/x-www-form-urlencoded"); request.AddParameter("application/x-www-form-urlencoded", "response_type=token&grant_type=client_credentials&client_id=1234&client_secret=1234&scope=", ParameterType.RequestBody); IRestRes
14 2024-04-25
编程技术问答社区
用WinHttp.WinHttpRequest查找检索的二进制数据的大小
我最近意识到UrldownLoadTofile使用IE代理设置.因此,我正在寻找替代方案并找到Winhttp.winhttprequest可能会起作用. 似乎响应属性属性包含被提取的数据,我需要将其写入文件.问题是我找不到它的字节大小. 拥有该对象的信息,但我没有找到相关属性. 有人可以说出如何吗? strURL := "http://www.mozilla.org/media/img/sandstone/buttons/firefox-large.png" strFilePath := A_ScriptDir "\dl.jpg" pwhr := ComObjCreate("WinHttp.WinHttpRequest.5.1") pwhr.Open("GET", strURL) pwhr.Send() if (psfa := pwhr.ResponseBody ) { oFile := FileOpen(strFilePath, "w")
14 2024-03-20
编程技术问答社区
如何使用WinHttpRequest COM进行登录?
您可以在网站上使用Mouseclick和键盘模拟在浏览器窗口上或使用IE com上自动化事物,但是对于某些应用程序,您不希望您的应用程序吸收hundrets megabytes ram的hundrets并使用CPU负载渲染网站等的功能. 所以问题是: 如何使用autohotkey在没有浏览器的情况下使用autohotkey登录到网站/网络服务,但使用winhttprequest com? 解决方案 我已经在AHK论坛上发布了此信息,但是我认为该信息也足够有用,可以在Stackoverflow上存档. :) 工具和入门 首先,如果您想做登录之类的事情,则可能应该学习一些HTML和有关HTTP协议的基础知识. fiddler 和 setProxy (2," localhost:8888")将对调试和反向工程进行很多帮助.我还建议您浏览器使用添加剂,以快速清洁饼干. 示例1(IP板论坛) 好吧,现在让我们看看一些示例. autohotkey.com论坛的
18 2024-03-20
编程技术问答社区
在经典ASP中向WinHttpRequest POST请求添加JSON内容的问题
我试图使用NHS API检索数据,并且说明如下... Endpoint https://api.nhs.uk/service-search/search?api-version=1 Method POST Headers Content-Type: application/json subscription-key: MYKEYHERE Body { "filter": "OrganisationTypeID eq 'PHA'", "orderby": "OrganisationName", "top": 25, "skip": 0, "count": true } 在此处的答案之后我可以在ASP Classic中使用Curl发布数据吗?我尝试了此...
10 2024-03-16
编程技术问答社区
TLS 1.2之后,WinHTTP.WinHTTPRequest.5.1无法在PayPal沙盒中工作。
PayPal Sandbox最近仅限于TLS 1.2连接.这使我们的网站停止使用Paypal沙箱,尽管它可以与PayPal生产.将来,生产PayPal将具有相同的限制.我们使用经典的ASP和Microsoft Winhttp.winhttprequest.5.1组件与PayPal通信.这是下面的代码. objhttp.statustext返回"不良请求".我们在Windows Server 2008 R2上.我尝试使用msxml2.serverxmlhttp.6.0,但它仅在我的Windows 8.1开发机器上使用,而不是在Windows Server 2008 R2上使用.尽管MSXML2.ServerxmlHttp.6.0是Winhttp.winhttprequest.5.1的超集,但它不如Winhttp.winhttprequest.5.5.1.过去,我们的代码每天使用MSXML2.ServerxmlHttp.6.0失败,因此我更喜欢使用winhttp.winhttprequest
22 2024-03-16
编程技术问答社区
会话ID在API调用中没有被刷新
我正在尝试使用VBA Excel访问网站 www.myfxbook.com . API文档在此处( 通过登录API登录 从登录API的响应中获取会话的会话ID 通过各种其他API获取基于此会话ID的数据 通过注销API注销以生成新的会话 我面临的问题是,即使使用了登录和注销API,并且没有抛出任何错误,但当我尝试通过Excel VBA使用它时,我总是会获得相同的会话ID.另一方面,每次通过Python甚至浏览器使用相同的URL都会给我一个不同的会话ID.我只能将Excel用于此项目.有人可以帮助我如何在成功注销时获得不同的会话ID? 我正在使用下面的代码来执行此操作.我为安全目的隐藏了电子邮件ID和密码. Sub extract() Dim sht1 As Worksheet Dim email As String Dim password As String Dim accountName As String Dim url As String Dim hre
8 2024-03-01
编程技术问答社区
Msxml2.ServerXMLHTTP和WinHttp.WinHttpRequest之间的区别?
当我最终了解MSXML2.xmlHttp和MSXML2.ServerxmlHttp 时 http://support.microsoft.com/kb/kb/290761 XMLHTTP专为客户端应用程序而设计,并依赖于Microsoft Win32 Internet(WinInet)构建的URLMON. ServerXMLHTTP是为服务器应用程序设计的,依赖于新的HTTP客户端Winhttp. ServerXMLHTTP提供可靠性和安全性,并且是服务器安全.有关更多信息,请参见MSXML软件开发套件(SDK)文档. 突然我找到了winhttp.winhttprequest ... -us/library/aa382925(vs.85).aspx Microsoft Windows HTTP服务(WINHTTP)为开发人员提供了服务器支持的高级接口,该界面是HTTP/1.1 Internet协议. WinHTTP的设计主要用于与HTTP服务器通信的服务器应用
70 2023-12-22
编程技术问答社区
wscript.CreateObject在为WinhttpRequest指定事件处理程序前缀时崩溃Windows脚本脚本主机
根据 msdn Documentation winhtttprequest 通过指定事件处理程序前缀来访问.不幸的是,这样做会导致Windows脚本拼写崩溃. 以下代码崩溃窗口脚本主机: Set oHTTP = WScript.CreateObject( "WinHttp.WinHttpRequest.5.1", "oHTTP_" ) 此代码正常工作: Set oHTTP = WScript.CreateObject( "WinHttp.WinHttpRequest.5.1" ) 关于为什么的想法? 解决方案 这不是任何方式的一部分.一厢情愿的编程很少有效. 创建并返回对自动化对象的引用. CreateObject(servername.typename [, location]) 参数 Servername 需要.提供对象的应用程序的名称. 打字机 需要.要创建对象的类型或类别. 位置 可选.要创建
14 2023-11-17
编程技术问答社区
使用WinHttpRequest和带集成Windows身份验证和https的代理需要代理身份验证(http错误407
我正在尝试使用VBA的WinHttpRequest从我的公司网络访问外部网站.该公司有一个需要集成的Windows身份验证的代理服务器. 如果我尝试使用普通HTTP访问URL,则以下代码有效,但是如果我尝试使用https访问URL,则获得HTTP状态代码407 - proxy authentication required. 我需要做些什么才能使代码与https一起使用? Sub a() Dim w As New WinHttp.WinHttpRequest 'set proxy w.SetProxy 2, "myproxy:8080" 'use integrated windows authentication w.SetAutoLogonPolicy AutoLogonPolicy_Always w.Option(WinHttpRequestOption_EnableRedirects) = True
44 2023-11-17
编程技术问答社区
如何在vba excel中解压http响应?
如何解压缩/解码GZIP/DEFLATE http/s vba中的响应? winhttp5.1不会自动解压缩/解码GZZERPECT或DEFLATE响应. msxml2确实会进行解压缩/解码响应,但不允许自定义标题或参考器. 解决方案 以下代码可通过调用来自Attrate模块的Attrate()函数来解压缩任何压缩数据.完整的膨胀模块代码如下.当然,您可以更改模块名称和函数名称,但请仔细. 'httpresponse as byte array Dim httpresponse() as Byte ... 'Perform a http/s request and get the response httpresponse = objwinhttprequest.responsebody 'responsebody returns a byte array Inflate.Inflate(httpresponse) 'this modifies the byte
8 2023-11-16
编程技术问答社区
vba下载表单URL带有登录名,该登录将其重定向到另一个
网站需要登录,然后将您重定向到其他URL,然后下载文件 此功能可与无重新钻的URL一起使用,但与我的案例 不正常 Function DownloadFile(URL As String, Path As String, UserName As String, Password As String) As Boolean DownloadFile = False Dim WinHttpReq As Object Set WinHttpReq = CreateObject("MSXML2.ServerXMLHTTP.6.0") WinHttpReq.Open "GET", URL, False, UserName, Password WinHttpReq.send Set oStream = CreateObject("ADODB.Stream") oStream.Open oStream.Type = 1
10 2023-11-16
编程技术问答社区
VBA | WinHttpRequest.5.1 | 忽略SSL错误不再工作了
我正在使用winhttprequest.5.1对象在Excel 365(16.0.11328.20562)上提出一些HTTPS请求. 我知道服务器证书将发生错误,因为CN是错误的.因此,我以忽略SSL错误的选项来抑制此错误. 我发誓以下代码在两周前有效,现在引发了此错误: 运行时错误-2147012727(80072F89)证书无效 这是代码(包括:Microsoft Winhttp Services,版本5.1 [winhttpcom.dll]): Sub test() Dim url As String url = "https://someserver:5096/api/v1/$metadata" Dim winHttpReq As WinHttpRequest Set winHttpReq = CreateObject("WinHttp.WinHttpRequest.5.1") 'Ignoriere SSL-Err
6 2023-11-16
编程技术问答社区
http响应文本获取不完整的html
我在Excel VBA中有一个代码(下面给出),该代码获取网页源HTML.该代码工作正常,但获取的HTML不完整.执行行webpageSource = oHttp.ResponseText时,变量WebPagesource包含" Doctype HTML公共.......等,直到结束/HTML",这就是应该的.直到这里一切都正确.但是下一行debug.print webpageSource仅在"(adsbyGoogle = window.adsbygoogle || [])中仅打印一半的html ?我想从返回的响应文本中找到一些字符串,但是由于不完整,所以我无法做到.有人可以阐明吗? 谢谢 Sub source() Dim oHttp As New WinHttp.WinHttpRequest Dim sURL As String Dim webpageSource As String sURL = "http://www.somewebsit
74 2023-11-15
编程技术问答社区
VBA-去网站并从保存提示中下载文件
我一直在过去的几个小时中试图弄清楚如何使用VBA将文件保存到计算机上.我在另一个论坛上发现的下面的代码模板似乎很有希望,除非我去桌面访问它,否则.CSV文件具有页面源代码,而不是我想要的实际文件.这可能是因为当我使用URL时,它不会自动下载文件.相反,我被要求将文件保存到某个位置(因为我不知道网站上已上传文件的路径名). 有什么方法可以更改此代码来适应此代码,或者我必须完全使用其他代码? Sub Test() Dim FileNum As Long Dim FileData() As Byte Dim MyFile As String Dim WHTTP As Object On Error Resume Next Set WHTTP = CreateObject("WinHTTP.WinHTTPrequest.5") If Err.Number 0 Then Set WHTTP = CreateObject("WinHTTP.WinHTTP
6 2023-11-15
编程技术问答社区
从Excel中执行HTTP发布并解析结果
我可以访问API. API将XML帖子作为输入,然后用相关数据返回XML响应. 我想 将HTTP帖子发送到服务器(身份验证和请求将一起发送) 接收响应(要返回的选项之一是CSV或XML) 将数据插入适当的行和列中,然后使用枢轴表执行数据分析. 我没有Excel中的编程背景,但对不同的Web脚本语言,HTML,CSS,JavaScript等都很满意. 有什么想法? 解决方案 可以使用此VBA代码来处理Excel请求侧. Sub GetStuff() Dim objXML As Object Dim strData As String Dim strResponse As String strData = "Request" Set objXML = CreateObject("MSXML2.XMLHTTP") objXML.Open "POST", "www.example.com/api?" & strData, False obj
20 2023-11-15
编程技术问答社区
如何用VBA在Excel中通过HTTP_POST发送文件?
这里提出的问题:我如何使用VBA从Excel发送HTTP POST请求?几乎完全是我在寻找的内容,只是我试图将许多文件发送到服务器.我进一步谷歌搜索,发现使用VBA帖子上传zip文件?这也很好,但是非常沮丧 - 似乎很多工作(不仅仅是在这里制作HTML表单...). 选项#2在这里: http://wwww.motobit.com/提示/detpg_post-binary-data-url/(如上所述的问题所述)似乎会很好地工作,但是当我在JS和CSS中工作时,我不知道如何创建FormData(示例中要发送到服务器的二进制文件. 有人可以帮我吗?从本质上讲,我想通过vba通过vba从内部Excel发送3-6个文件,以在Web服务器上的php脚本上发送,该脚本正在期待诸如表单数据(例如.处理此操作的HTML表格看起来像:
440 2023-11-15
编程技术问答社区
发布方法 + WinHttpRequest + multipart/form-data
我很困惑为什么这不起作用似乎找不到任何问题. 这是代码. Public Const MULTIPART_BOUNDARY = "speed" Function getBalance() As String Dim sEntityBody As String Dim postBody() As Byte Dim username As String Dim password As String username = CStr(frmMain.txtUser.text) password = CStr(frmMain.txtPass.text) sEntityBody = "--" & MULTIPART_BOUNDARY & vbCrLf sEntityBody = sEntityBody & "Content-Disposition: form-data; name=""function""" & vbCrLf & vbCrLf & "balance" & vbCrLf
24 2023-11-15
编程技术问答社区
WinHTTP VBA后续请求不能使用之前的登录凭证?
我正在使用访问2007 VBA中的winhttp来获取需要 cookie登录凭据帐户的项目列表. 首先,我通过 https://www.example.com/login.php 这个: Dim strCookie As String, strResponse As String, _ strUrl As String ' Dim xobj As Object ' Set xobj = New WinHttp.WinHttpRequest ' strUrl = "https://www.example.com/login.php" xobj.Open "POST", strUrl, False xobj.SetRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" xobj.SetRequestHeader "Content-Type"
6 2023-11-01
编程技术问答社区
在Winhttpreceiveresponse接收12030
我刚刚与WinHTTP一起使用SSL.我收到ERROR_WINHTTPCONNECTION_ERROR 在MSDN中说的文档, The connection with the server has been reset or terminated, or an incompatible SSL protocol was encountered. For example, WinHTTP version 5.1 does not support SSL2 unless the client specifically enables it. 原因是什么?我尝试了不同的链接. gcc myFile.c -o myFile.exe -lwinhttp是arg. #include #include #include #include #ifndef WINHTTP_FLAG_S
12 2023-09-27
编程技术问答社区
从一个OleVariant中获取一个IS流
我正在将Delphi与WinHTTP一起使用HTTP请求,以从Internet下载一些文件,我可以执行请求,但我不知道如何从ResponseStream返回的Olevariant中获取ISTream .我花了很多时间谷歌搜索,但我不知道该怎么做.这是我尝试的: var req: IWinHTTPRequest; instream: IStream; begin req := CoWinHTTPRequest.Create; req.Open('GET', 'http://google.com', false); req.Send(''); if req.Status 200 then begin ShowMessage('failure'#10 + req.StatusText); FreeAndNil(req); Application.Terminate; end; instream := req.Re
34 2023-05-08
编程技术问答社区