问题标签 [wininet]
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.
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 日志看起来很相似。所以我认为这是更好的方法。
还有什么想法吗?
c++ - 使用 WinInet 和 WinHTTP 调用服务器
当我使用 WinInet API 时,我有一个可以正常工作的请求。我现在想用 WinHTTP API 发出这个请求,因为我已经在我的项目中使用了它,而且它更好。我的请求用于调用 JSON。在调用它之前我已经进行了身份验证。进行身份验证时,我得到一个通过 cookie 发送的 SessionID。
所以这是我的工作 WinInet 代码:
所以我现在想使用 WinHTTP API 来做同样的事情。这是我目前所拥有的:
在后一个电话中,我总是收到 401,但我应该像第一种方法一样收到 200。我还发现,当我没有指定INTERNET_FLAG_NO_COOKIES
标志时,第一次调用时会收到 401。所以我怀疑cookie标头有问题。有谁看到我做错了什么?或者这两种方法有什么区别?
谢谢...
c++ - FtpFindFirstFile 的问题
我想从我想用于该 FtpFindFirstFile 和 FtpGetFile 的 ftp 目录下载所有文件;
该代码返回错误我知道,因为我没有识别 LPWIN32_FIND_DATA 上的内存。但我不知道怎么做。
delphi - Soap Delphi 客户端以 1MB 调用超时结束
我们正在开发一个 SOAP 网络服务 (Apache/PHP)。对于小规模调用,所有这些都运行良好,但是对于 1Mb 的肥皂调用(HTTPS 调用大小为 1MB),我们的 Delphi Soap 客户端在除一台以外的所有 PC 上超时停止,而我们的 PHP 客户端在 default_socket_timeout=300 时运行良好,但停止带有 default_socket_timeout=60 的“错误获取 http 标头”。
我们如何更改 Delphi 的超时时间?事实上,这个超时似乎在 Windows XP 网络库中(由 soaphttptrans.pas 调用的 wininet.dll)
谢谢塞德里克
_
c++ - HttpSendRequest 未从服务器获取最新文件
我的应用程序中的 HTTP 请求存在问题,例如,如果远程文件与本地文件大小相同(即使其修改时间不同,因为其内容已更改),尝试下载它会很快返回并且未下载较新的文件。
简而言之,我遵循的过程是:使用INTERNET_FLAG_RESYNCHRONIZE
标志建立 HTTP 连接并调用 HttpSendRequest(); 然后检查 HTTP 状态代码并发现它是“200”。
- 如果远程文件已更新,但仍与本地副本大小相同:运行应用程序后本地文件未更改。如果我在发送请求后打电话
HttpQueryInfo()
给HTTP_QUERY_LAST_MODIFIED
我,它会给我服务器文件的实际最后修改时间,我可以看到它与我试图覆盖的本地文件不同。 - 如果远程文件被更新,并且文件大小与本地副本不同:它被下载并按预期覆盖本地副本。
这是代码的一个相当精简的版本,用于删除助手和错误检查:
因为我发现我可以查询远程文件的最后修改时间,并且发现它是准确的,所以我知道它实际上正在到达服务器。我认为如果文件过期INTERNET_FLAG_RESYNCHRONIZE
,指定会强制文件重新同步。难道我都错了吗?这只是它应该如何工作吗?
编辑:我用数据包嗅探器做了一些调查,这里有一些额外的信息:
如果远程和本地文件完全一样,这就是交换:
现在,如果远程文件已更改,但文件大小保持不变:
因此,服务器确实在文件更改时发送了文件,但我的应用程序似乎仍然认为它没有更改。我认为问题在于我的应用程序如何处理响应;这不是我自己的代码,编写它的人很久以前就已经离开了。
我发现的一个问题是,在上述两种情况下,当我打电话时HttpQueryInfo()
,HTTP_QUERY_STATUS_CODE
我会得到 200 回。但是,在上面的第一种情况下,我可以看到实际的服务器响应是 304,而不是 200。深入研究我们正在使用的代码,我发现它似乎试图通过进行文件大小比较来解决这个问题,并假设如果文件大小相同,则文件未更改;因此,我遇到的问题!
所以现在我的问题更简单了:为什么HttpQueryInfo()
即使服务器返回 3XX 错误之一也会返回 200?我发现有些人在网上问了类似的问题,但他们要么没有收到回复,要么直接与网络浏览器打交道。
delphi - 在 HttpSendRequest 之后获取身份验证令牌
以下代码将我的应用程序登录到服务器。如果登录成功,该服务器将返回一个身份验证令牌。我需要使用该令牌来查询服务器以获取信息。
我如何获得该令牌?我尝试查询 cookie,尝试了 InternetGetCookie() 等等。代码表示赞赏
谢谢
杰斯
编辑
我发现如果你使用 InternetReadFile 你可以获得那个令牌。但是,该令牌以字节数组的形式出现。以后很难使用它来将它发送到服务器......谁知道如何将字节数组转换为 pchar 或字符串?
wininet - Wion32's HttpSendRequest : ERROR_INTERNET_INCORRECT_HANDLE_STAT
I have C++ Win32 app that uses HttpSendRequest to request some URL (via https). It worked OK earlier; but then errors ERROR_INTERNET_INCORRECT_HANDLE_STATE began happen. Why these ones? Any ideas?
windows - 无法在 Windows 7 上查询代理“自动检测设置”
我正在尝试捕获代理设置(“自动检测设置”)。我的代码适用于 XP 和 Vista。但它不适用于 Windows 7
请查看目标平台的详细信息
Windows 7 企业版,IE 8.0.7600.16385,Wininet.dll 8.0.7600.16535
请看代码片段
但是在 Windows 7 上,即使选中了 IE 中的“自动检测设置”选项,程序也会说没有设置该标志
我也尝试使用 WinHttp api,如下所示。
在 Windows 7 上,上述代码也无法捕获“自动检测设置”选项。对此的任何意见都将受到高度赞赏。
谢谢约翰
winapi - 调用 InternetOpen 时应该使用哪种 accessType?
根据MSDN,您可以为 InternetOpen 指定访问类型参数。dwAccessType 参数的两个选项是:
INTERNET_OPEN_TYPE_DIRECT - 在本地解析所有主机名。INTERNET_OPEN_TYPE_PRECONFIG - 从注册表中检索代理或直接配置。
我应该使用哪一个?我不知道哪个会“更好”。我们不希望我们的应用程序做任何聪明的事情,我们希望它做的只是以正常方式访问互联网。
delphi - 如何使用 WinInet 在 Delphi 2010 中发送 HTTP Post 请求
我想使用 WinInet 在 Delphi 2010 中发送 HTTP Post 请求,但我的脚本不起作用;/
这是我的德尔福脚本:
和我的 PHP 脚本: