使用 WinHttp.WinHttpRequest 查找检索到的二进制数据的大小

2024-02-23

我最近意识到 URLDownloadToFile 使用 IE 代理设置。所以我正在寻找替代方案,发现 WinHttp.WinHttpRequest 可能有效。

ResponseBody 属性似乎包含获取的数据,我需要将其写入文件。问题是我找不到它的字节大小。

http://msdn.microsoft.com/en-us/library/windows/desktop/aa384106%28v=vs.85%29.aspx http://msdn.microsoft.com/en-us/library/windows/desktop/aa384106%28v=vs.85%29.aspx有该对象的信息,但我没有找到它的相关属性。

有人能告诉怎么做吗?

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")
    ; msgbox % ComObjType(psfa) ; 8209 
    oFile.RawWrite(psfa, strLen(psfa)) ; not working
    oFile.Close()   
}

我自己找到了办法。

Since psfa是一个字节数组,简单地用元素的数量代表它的大小。

msgbox % psfa.maxindex() + 1    ; 17223 bytes for the example file. A COM array is zero-based so it needs to add one.

但是,要保存存储在 safearray 中的二进制数据,使用文件对象并不成功。 (可能有办法,但我找不到)相反,ADODB.Stream就像魅力一样。

strURL := "http://www.mozilla.org/media/img/sandstone/buttons/firefox-large.png"
strFilePath := A_ScriptDir "\dl.png"
bOverWrite := true

pwhr := ComObjCreate("WinHttp.WinHttpRequest.5.1")
pwhr.Open("GET", strURL) 
pwhr.Send() 

if (psfa := pwhr.ResponseBody ) {   
    pstm := ComObjCreate("ADODB.Stream")
    pstm.Type() := 1        ; 1: binary 2: text
    pstm.Open()
    pstm.Write(psfa)
    pstm.SaveToFile(strFilePath, bOverWrite ? 2 : 1)
    pstm.Close()    
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 WinHttp.WinHttpRequest 查找检索到的二进制数据的大小 的相关文章

  • COM 返回未实现任何接口的类型

    我需要通过 NET 4 0 应用程序自动执行 Adob e InDesign CS3 中的一些任务 我已使用 Visual Studio 中的 添加引用 对话框添加了对 InDesign 类型库的引用 它生成一个互操作程序集 该程序集正确包
  • Qt Widget 应用程序“库未注册”错误

    我最近刚刚开始使用 Qt 并创建了一个简单的 Qt Widgets 应用程序 当我构建并运行应用程序时 即使我创建了一个没有新代码的新项目 我收到以下错误消息 mincore com oleaut32 dispatch ups cpp 21
  • 应用程序之间的通信

    我有 3 个选择可以使用 套接字 activeX com 以便在一台计算机上的应用程序之间进行通信 哪个更快 只要它在一台机器上运行 进程间通信从根本上就会受到总线带宽的限制 内存到内存的复制 无论是在 TCP IP 堆栈 命名管道支持代码
  • Excel进程的最大数量?

    如果我这样做 例如 for int i 0 i lt 22 i var app new Excel Application 然后创建22个excel进程 但是 如果我这样做 for int i 0 i lt 25 i var app new
  • 释放临时 COM 对象

    请考虑以下使用 COM 对象的 C 代码 MyComObject o new MyComObject try var baz o Foo Bar Baz try do something with baz finally Marshal R
  • 在Delphi中销毁COM对象

    有一些 net程序集 通过COM在delphi中调用它 var intf ITest intf CreateComObject CLASS TEST as ITest here comes some stuff 我必须做点什么来破坏它以释放
  • .NET COMException 接口未注册

    我无法理解这一点 我想使用该供应商的 OCXhttp www mobyt it http www mobyt it 发送短信 它是一个 dll 他们提供了 Vb NET Visual C 等的使用示例 我得到的例外是 System Runt
  • 如何在现有 Windows 应用程序中获得 ATL 支持

    我正在 Visual Studio 2012 中使用 Qt 5 3 1 构建一个应用程序 我还想使用一个硬件库 这需要我向项目添加一个简单的 ATL 对象 这可以通过使用 Visual Studio 向导来完成 该向导抱怨我的项目既不是 M
  • 从单线程进行 COM 调用会挂起线程

    我有一个应用程序 可以通过自动化插件执行一些 Excel 自动化操作 该加载项是多线程的 所有线程都设法调用 Excel COM 对象 由于 Excel 在进行多次调用时有时会返回 忙 异常 因此我将所有调用包装在 重试 函数中 但我觉得这
  • 从 C# 客户端调用远程 COM+ ServicedComponent

    我在 COM 服务器应用程序中安装了一个服务组件 我想从远程客户端创建一个实例 客户端需要能够动态指定服务器计算机的名称 我该怎么做呢 我尝试使用激活器 XSLTransComponent XSLTransformer Activator
  • 为不存在的文件创建 IShellItem 实例

    我怎样才能获得外壳项目 http msdn microsoft com en us library bb761144 aspx不存在的文件 或目录 的对象 SHCreateItemFromParsingName http msdn micr
  • 如何在CWorkerThread中编写简单的后台线程

    我正在尝试在 Internet Explorer 的附加组件中异步运行函数 我正在用 VC 编写 BHO 按照建议here https stackoverflow com questions 4285346 threading in bho
  • 如何使 .NET COM 对象成为单元线程?

    NET 对象默认是自由线程的 如果通过 COM 编组到另一个线程 它们总是会编组到自己 无论创建者线程是否为 STA 也无论它们的线程如何ThreadingModel注册表值 我怀疑 他们汇总了免费线程封送拆收器 http support
  • 使用 script/api 更改组件服务 > COM 安全中的访问权限?

    是否有一个 api 可以更改 COM 安全的访问权限 我需要将新值写入 编辑限制 和 编辑默认值 这些是普通的注册表设置吗 找不到如何设置这些条目 快速答案是是 它们是注册表设置 长答案是否 它们不是simple注册表设置 这些值是二进制的
  • 允许连接到完整性级别不匹配的 .NET COM 服务器

    我在基于 COM 的客户端 服务器设置方面遇到问题 COM 服务器是用 C NET 4 0 编写的 并作为 注册的 本地服务器运行 根据连接到服务器的应用程序 其他客户端将收到服务器执行失败 HRESULT 异常 0x80080005 CO
  • 如何在对话框中托管预览处理程序

    我正在尝试在对话框中托管文件预览处理程序 我已经为资源管理器中的选择更改设置了一个事件接收器 当选择更改时 我将选定的 shell 项目提供给对话框 该对话框又将其提供给准备预览帧的函数 一般来说 它会成功加载正确的处理程序并显示文件的内容
  • Delphi COM 对象中的早期绑定和后期绑定在性能方面哪个更好

    在delphi中 如果要创建COM对象 可以通过两种方式来完成 第一个是早期绑定 例如 uses MSScriptControl TLB MS Script Control var obj IScriptControl begin obj
  • 服务器端生成的 Excel 中出现 System.Runtime.InteropServices.COMException 错误

    我们有一个 Web 应用程序 可以生成 Excel 电子表格并在服务器端运行宏 然后它通过电子邮件将它们发送给不同的人 它是传统报告风格的一部分 我们正在对其进行转换 但仍然支持我们作为 IIS 中的网站提供的新应用程序 我知道进行 Off
  • 从delphi应用程序调用.net4.0 com服务器后出现错误异常

    我们正在将代码库从 BDS2006 迁移到 Rad Studio XE 我们发现了一些非常奇怪的行为 如果我们在从 Net4 0 中实现的 COM 服务器创建一些对象后进行无效的浮点运算 即除以零 我们不会没有得到正常异常 即 EDivis
  • .NET WebBrowser 控件可以使用 IE9 吗?

    我意识到这是一个早期版本并且不稳定 我不会梦想在任何其他项目中将默认的 Web 浏览器控件替换为 IE9 但在这种情况下 我特别需要 IE9 与其他版本进行比较 我想让 NET WebBrowser 控件使用 IE9 而不是机器上默认版本的

随机推荐

  • 如何测试需要jquery的ES6类?

    我有一个需要 jquery 的 ES6 模块 import from jquery export class Weather Constructor for Weather class param latitude param longit
  • 是否可以使用 python 安装 msi?

    是否可以用 python 编写一个安装 msi 的脚本 或者 是否可以通过任何其他脚本来实现 您可以使用过时的操作系统 http docs python org library os html highlight os system os
  • 应用程序获得 Amazon AppStore 批准需要多长时间? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 申请被审查的平均时间是多少亚马逊应用商店 https developer amazon com 小型 无争议 优质的应用程序 在 Android 市场
  • ASP.NET MVC3 和 Facebook 集成

    我正要使用 MVC3 启动一个新的 ASP NET 项目 并且由于一些要求与 facebook 集成有关 因此我需要您就以下问题提供建议 1 是否可以将我的会员用户连接到他们的 Facebook 帐户 以便每当用户在我的网站上分享 添加 评
  • 有没有办法在 Android 中定义 EditText 的最小值和最大值?

    我想定义一个最小值和最大值EditText 例如 如果有人尝试在其中输入月份值 则该值必须在 1 12 之间 我可以通过使用来做到这一点TextWatcher但我想知道是否有其他方法可以在布局文件或其他地方执行此操作 编辑 我不想限制字符数
  • Java中的char和Character有什么区别?

    我需要知道Java中的char和Character有什么区别 因为当我编写java程序时 char可以工作 而Character却不起作用 char 是表示单个 16 位 Unicode 字符的原始类型 而 Character 是一个包装类
  • 如何正确使用UrlEncode和Decode

    所以我有一个文件要上传到 azure blob 存储 C 测试文件夹 A B testfile txt 以及两个扩展方法 可帮助对我的路径进行编码 以确保为其提供有效的 azure 存储 blob 名称 public static stri
  • 旋转 glViewport?

    在 多点触控 环境中 表面上显示的任何应用程序都可以根据用户的方向旋转 缩放 实际的解决方案是在 FBO 上绘制应用程序 并绘制一个带有纹理的旋转 缩放的矩形 我认为这对性能没有好处 而且所有显卡都不提供FBO 这个想法是沿着用户的方向裁剪
  • 如何获取MASM中当前光标位置

    我正在编写一个智商测试生成程序 其中我必须随机生成包括言语非言语问题的问题 为了生成非语言问题 我想显示其中字母和字母以圆形或三角形出现的问题 但我不知道如何定位它们 例如 在非语言问题中 我想通过编写以下代码将字母和数字放置在三角形中 m
  • 虚拟继承中应该写“public virtual”还是“virtual public”?

    基于http en wikipedia org wiki Virtual inheritance http en wikipedia org wiki Virtual inheritance class Animal Two classes
  • 使用 Django Rest 框架中定义的 mixins 类

    Mixins类的实际用途是什么 我实在不明白 所有 mixins 类 如 CreateModelmixin Listmixin 等功能 都已在基于类的视图 如 ListCreateApiView 中可用 For eg class Examp
  • 从 Firestore 文档中嵌套的集合获取数据的最佳方法是什么?

    我正在浏览 Firestore 文档和指南 我下面的代码示例使用 AngularFire2 让我们考虑一个类似于此处提供的示例的 聊天 集合 https firebase google com docs firestore manage d
  • Python只保留列表中的字母数字单词

    我有一个类似于以下的单词列表 mylist hi h ello how re you list 我想提取所有非字母数字字符以给出如下结果 h ello how re list 请注意 我在现实生活中有一个更长的列表 它包含一些非字母数字实例
  • 如何使用 MS HPC Server 2008 R2 的 MPI 堆栈成功编译 mpi4py?

    故事是这样的 我需要一个 Python 的 MPI 包装器 我知道有mpi4py http code google com p mpi4py 对于当前的工作 我 大部分 使用 Python 和 Windows 我想使用 Microsoft
  • 使用bolthold 3条件进行boltDB查询

    所以我有这个问题 https stackoverflow com questions 72058075 go boltdb query using bolthold之前 我在问题下面有一个有效的答案 但我刚刚意识到我提出的查询没有按计划工作
  • 有没有办法调试 v8 堆之外发生的内存泄漏

    我有一个在 NodeJS 上运行的生产应用程序 它提供了大量的流量 虽然部署后一切顺利 但性能在几个小时后开始下降 我们在 newrelic 上注意到 NodeJS 的非堆内存持续稳定增长 而 V8 堆内存则保持稳定 我们尝试使用 Chro
  • Xampp 上的 Symfony 开发速度非常慢,我该怎么办?

    我已经设置了 Symfony 但每个页面加载需要 40 秒 如果我有一个空控制器 则加载需要 8 秒 如果我开始对数据库进行一些复杂的查询 情况会更糟 我能做些什么 停用分析器 这会改变很多吗 在开发模式下激活 APC 但是这不会成为更改代
  • Rails open-uri 在路径上中断

    我正在尝试使用 open uri 获取 url 我的代码非常简单 url open http localhost 3000 descriptions return render text gt url to json 当我运行此代码时 出现
  • 我可以在 PowerShell 脚本中禁用选择模式吗?

    PowerShell 默认情况下 当您在 PowerShell 控制台内单击时 PowerShell 会进入 选择模式 并暂停脚本 直到您按空格键 输入键或转义键 我有一个无限循环的脚本while true 它应该始终运行 当有人意外单击
  • 使用 WinHttp.WinHttpRequest 查找检索到的二进制数据的大小

    我最近意识到 URLDownloadToFile 使用 IE 代理设置 所以我正在寻找替代方案 发现 WinHttp WinHttpRequest 可能有效 ResponseBody 属性似乎包含获取的数据 我需要将其写入文件 问题是我找不