问题标签 [winhttp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2855 浏览

c++ - 在 MFC 应用程序中使用 wininet 和 winhttp 编译错误

奇怪的是我之前有这个工作,但我重新安装了我的系统,升级到 w7,现在我似乎无法编译这段代码。

问题是我在我的大部分应用程序中都使用了 winhttp.h,但是我有一个使用 wininet.h 功能编写的简单 FTP 客户端对象。无论我如何/在何处包含哪些标头,我现在似乎都无法编译应用程序。

目前我在我的 stdafx.h 中有:

在我的 ftp 客户端 .c

这会成功编译所有对象,但失败的 FTP 客户端对象除外:

c:\Program Files\Microsoft Platform SDK\Include\WinInet.h(52) : 警告 C4005: 'BOOLAPI' : 宏重新定义 c:\Program Files\Microsoft Platform SDK\Include\winhttp.h(45) : 见之前的定义'BOOLAPI' c:\Program Files\Microsoft Platform SDK\Include\WinInet.h(270):错误 C2143:语法错误:在 '('c:\Program Files\Microsoft Platform SDK\Include\WinInet 之前缺少 '}' .h(270) : 致命错误 C1903: 无法从先前的错误中恢复;停止编译

有什么建议吗?

0 投票
2 回答
3118 浏览

winapi - 使用 WinINET 为虚拟用户创建健壮的 HTTP 连接

我正在制作一个程序,它使用 Wininet 系列 API 从 Windows 上的 Internet 下载一个简单文件,因为我想利用其与 IE 兼容的代理行为。众所周知,目前的 IE 有几个代理设置:自动检测(WPAD)、自动配置(PAC)、手动单个 URL、每个协议的代理服务器、socks、直接...对于大多数用户来说,“直接下载“ 工作正常; 但是对于某些用户(尤其是防火墙/NAT 后面的用户),他们在建立连接时总是需要特殊的代理设置。

编写代码来处理所有这些情况很痛苦,所以我希望 WinINETInternetOpen (INTERNET_OPEN_TYPE_PRECONFIG)可以帮助我。它适用于大多数用户,但是我仍然发现一些用户抱怨连接失败。这些用户可能有非常特殊的网络环境(例如,代理需要用户名/密码验证)并且直接连接对他们不起作用。

有时虚拟用户配置错误,我希望 wininet 为我尝试“所有”可能的代理设置;不幸的是,INTERNET_OPEN_TYPE_PRECONFIG只会尝试用户配置的那个,而不是“所有可能的代理设置”。

所以我的问题是,我如何为虚拟用户(即他们不了解如何配置他们的系统)制作一个具有最强大能力的程序来解决所有 http 连接(尤其是代理配置)?是否有任何建议的方法来建立 HTTP 连接而无需处理代理的东西?(即,将尝试所有可能的代理设置的“超级”连接求解器),或者是否有任何方法告诉 WinINET 启用其所有代理设置以创建连接?

0 投票
1 回答
1929 浏览

windows-7-x64 - WinHTTP 和 Windows 7 x64:错误

我有一个使用 WinHTTP 的应用程序,似乎在 Windows 7(64 位;尚未测试 32 位版本)下,对 WinHttpOpen 的调用失败,返回

“组或资源未处于执行请求操作的正确状态。”

这对应于错误代码 5023,并且发生在管理员和标准用户中。包含此调用的 C++ DLL 是在 Windows XP Professional 系统上使用 Visual Studio 2008(32 位)编译的。

除了 Outlook 2007,这是在 VM 中的全新安装。

谢谢!

0 投票
1 回答
1686 浏览

file - 使用 WinHTTP 和 LotusScript 上传 TXT 或 CSV 文件

问题: 1)如何指定“边界”并将文件内容正确发送为TXT文件上传?2)如何为这个边界内容指定换行符?

亲切的问候,提前!

0 投票
2 回答
3688 浏览

c++ - 如何快速获取 WinInet 的代理设置(不依赖网络)

如何从 C++ 快速检索 Internet Explorer 的代理设置?

windows功能WinHTTPGetIEProxyConfigForCurrentUser()给了我我想要的东西。

问题WinHTTPGetIEProxyConfigForCurrentUser()是它在我的一些用户系统上运行缓慢(他们运行的是 Windows 7)。对于这些用户,该功能需要几秒钟才能完成。它似乎具有网络依赖性,因为如果他们拔下网络电缆,该函数会快速返回(并且结果相同)。

那么如何在没有这种慢速网络依赖的情况下获取系统代理设置呢?

谢谢!

0 投票
4 回答
6541 浏览

c++ - 在 C++ 中将字符串转换为 LPVOID 和 LPCWSTR

我正在使用 c++ 中的 winHTTP API,并且我已经开始为我的应用程序编写一个包装类。为简单起见,我有许多函数可以接受字符串参数并在 winHTTP 调用中使用它们。然而,其中许多要求数据为 LPVOID 或 LPCWSTR。我可以通过让我的包装函数采用 LPVOID 或 LPCWSTR 参数来完成所有工作,但我更喜欢字符串参数。那么有什么方法可以从刺痛转换为 LPVOID/LPCWSTR?

我的尝试(下)只是产生了胡言乱语

任何帮助将非常感激

谢谢

0 投票
1 回答
355 浏览

winhttp - IWinHttpRequest fails with status code 407 even after SetCredentials for "www.google.com"

My system Browser (IE) is proxy authenticated. I tried to download "www.google.com" using IWinHttpRequest it fails with status code 407 ( Need Proxy Authentication ) even after setting the user name and password using SetCredentials(...) for "www.google.com". The response text contains "cache access denied". How to solve this?

0 投票
2 回答
3203 浏览

c# - 使用 C# 和 C++ 获取重定向信息


我究竟做错了什么?我正在尝试从用于验证用户身份的服务器获取重定向信息。这适用于我的 C# 代码,但我无法使我的 C++ 代码正常工作。
所以这是有效的 C# 代码:

我使用这些信息进行进一步的身份验证。一切安好。

我现在想对 C++ 代码做同样的事情。但是该代码不起作用。
所以这里是:

现在的问题是我Location: https://myAuthServer.com/centrallogin-2.2/error.jsp没有正确的重定向和会话。我已经发现,当我没有request.ContentType正确设置时,我的 C# 代码中也会出现这个错误。但我确实在我的 C++ 代码中设置了 Content-Type 标头。所以我不知道我做错了什么。
还有什么想法吗?
编辑:
好的,我也尝试过使用 WinHTTP API。这是我的代码:

所以重定向 url 和会话 id 应该在 chData 中。但结果又是错误的。我也试过 Wireshark。由于这一切都是 HTTPS,我无法从中读出太多信息。我唯一可以比较的是帧数等。使用 WinHTTP 时,Wireshark 日志看起来很相似。所以我认为这是更好的方法。
还有什么想法吗?

0 投票
1 回答
2815 浏览

ssl - 使用 WinHTTP 通过 CONNECT 和 POST 发送用户代理?

我正在尝试使用 WinHttp 发布到安全站点,但遇到了一个问题,即用户代理标头没有与 CONNECT 一起发送。

我正在使用 MSDN 中经过轻微修改的代码示例:

这样做是通过 192.168.1.2:3199 上的经过身份验证的代理连接到我的服务器,并进行 POST。这可行,但是当我检查代理日志时,用户代理字符串(“WinHTTP AutoProxy Sample/1.0”)没有作为 CONNECT 的一部分发送。但是,它作为 POST 的一部分发送。

有人可以告诉我如何更改此代码以在 CONNECT 和 POST 期间发送 User-Agent 标头

编辑添加:我们仅在 Windows 7 上观察到此问题。如果我们在 Windows Vista 机器上运行相同的代码,我们可以看到在 CONNECT 上发送的 User-Agent 标头。

0 投票
2 回答
3391 浏览

c++ - 使用 WinInet 和 WinHTTP 调用服务器


当我使用 WinInet API 时,我有一个可以正常工作的请求。我现在想用 WinHTTP API 发出这个请求,因为我已经在我的项目中使用了它,而且它更好。我的请求用于调用 JSON。在调用它之前我已经进行了身份验证。进行身份验证时,我得到一个通过 cookie 发送的 SessionID。
所以这是我的工作 WinInet 代码:

所以我现在想使用 WinHTTP API 来做同样的事情。这是我目前所拥有的:

在后一个电话中,我总是收到 401,但我应该像第一种方法一样收到 200。我还发现,当我没有指定INTERNET_FLAG_NO_COOKIES标志时,第一次调用时会收到 401。所以我怀疑cookie标头有问题。有谁看到我做错了什么?或者这两种方法有什么区别?
谢谢...