问题标签 [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.
php - 未收到 WinHttp POST 正文
我正在将带有 POST 数据的 WinHttp 请求发送到 IIS7 服务器上的 php 脚本,并且服务器没有接收到 POST 正文。如果我使用 GET 通过 WinHttp 发送,或者带有 NULL 正文的 POST,或者通过使用带有正文的 POST 的 HTML 表单,一切都会按预期工作。
下面是一些简单的代码,显示了带有和不带有主体的 WinHttp POST 调用之间的区别:
没有身体:
有身体:
所以唯一的区别是正文参数和内容类型标头。真正奇怪的是,这可能会工作 20 次中的 1 次,但通常服务器不会接收到正文并且它会超时。这里有什么明显的错误吗?
c++ - 是否有用于获取代理用户名和密码的标准 Windows 对话框?
我正在WinHTTP
编写一个需要访问互联网的应用程序,并且可能位于代理后面。一切(几乎)开箱即用是用户在域中,但如果他或她不在域中,那么我需要一种方法来请求凭据。有这样做的标准方法,还是我应该编写自己的对话?
理想情况下,我想要一些模仿 IE 的用户名/密码对话框的东西。
谢谢。
vba - 如何使用 VBA 通过 HTTP 发布上传 zip 文件?
其他人以某种形式多次问过这个问题,但大多数仍未得到回答,或者给出的答案是“使用 C#,呃!”,顺便说一句,这是一个非答案。;-)
我想通过 VBA 将 zip 文件上传到 Web 服务器。服务器端代码已经存在并且运行良好;它通过手动表单上传接受 zip 文件,并对 zip 文件的内容进行处理。
理论上,我计划将 zip 文件的二进制内容转换为 HTTP 请求字符串,并使用 WinHTTP 库中的一些方法将其发送到服务器。如果一切顺利,服务器端脚本(在 Perl 中)应该无法判断文件是来自 VBA 还是来自浏览器并继续正常工作。
但是,将 zip 文件转换为 HTTP 请求字符串似乎不是很简单。
在线搜索似乎表明存在 3 种常见策略:
方法一:WinHTTP和手动编码二进制到HTTP请求字符串
- 涉及以二进制模式打开文件并手动应用一些编码 voodoo 将二进制流更改为 HTTP 请求字符串并使用 WinHTTP 将其发送。可怕的代码量。
方法二:WinHTTP
- 涉及使用 ADODB.Stream。不到十行代码。
方法 3:通过 SendKeys 自动化 IE
- 只能用一个词来形容这个 hack:Yuck!并且可能会在未来版本的 IE 中中断,如果还没有的话。不到十行代码。安全风险。
我倾向于Method 2,但是,文档很薄,代码示例很少,并且不确定它是否有效。大多数代码示例都不完整,并且经常有注释说它们不起作用。这种方法真的有效吗?
方法1是下一个。
方法3请不要!(如果涉及到,宁愿使用 C#。喜欢 C#,只是要求只允许 VBA)
任何人都有关于如何完成这项任务的好例子?
php - 写入关闭后继续 WinHTTP 连接
我正在使用 WinHTTP 将数据发送到 Web 服务器脚本,在某些情况下,我需要服务器终止传入的数据(因为它不是必需的),但仍向客户端应用程序返回响应。我stream_socket_shutdown(STREAM_SHUT_RD)
从服务器端使用来结束传入的数据,然后正常发送响应。问题出在 WinHTTP 上,我WinHttpWriteData()
按预期收到了否定响应并停止发送数据,但是当我调用WinHttpReceiveResponse()
它时返回 false 并GetLastError()
返回ERROR_WINHTTP_CONNECTION_ERROR
。
有没有办法重置 WinHTTP 的内部错误条件?或者在服务器断开连接后接收响应的另一种方式?
谢谢,J
c++ - WinHTTP 错误 URL 无效
您如何指定带有路径的 URL,例如:http://stackoverflow.com/questions
.
以下内容有效,但不适用于上面示例中指定的 URL。
http - 如何使用 WinHTTP 库进行 kerberos(Windows 集成)身份验证
有一个运行在 linux 机器上的服务器,它理解 kerberos,它也处理 SPNEGO,只理解 kerberos,但它不理解 NTLM
Firefox 和 IE 使用 kerberos 令牌成功登录并访问网页,而无需再次提示输入密码。
现在,我正在尝试使用 WinHTTP 库编写一个应用程序。我按照这里的例子 http://msdn.microsoft.com/en-Us/library/aa383144(v=vs.85).aspx
在 WinHttpSetCredentials 调用中,我不想设置用户名密码,而是想告诉此调用使用现有凭据。我怎么做?
如果我提到用户名和密码为空白,它不起作用,它会退回到 NTLM 并失败。
那么有人可以告诉我如何使用 WinHTTPSetCredentials 吗?
c++ - 使用 WinHttp 发布表单
在向服务器发布帖子之前,我是否需要添加任何标题?
例如,目前我正在尝试以这种方式发送请求以及发布数据,
这应该工作吗?
winhttp - 阐明 WINHTTP_STATUS_CALLBACK 函数的用法,用于 SSL 状态代码
我正在用 C 编写一些 WinHttp 代码。我正在通过 SSL 发送请求,并且为了处理 SSL 错误,我正在注册一个WINHTTP_STATUS_CALLBACK 函数,通过调用WinHttpSetStatusCallback并将 dwNotificationFlags 设置为 WINHTTP_CALLBACK_STATUS_SECURE_FAILURE。
WINHTTP_STATUS_CALLBACK 的文档说,当使用dwInternetStatus
= WINHTTP_CALLBACK_STATUS_SECURE_FAILURE 调用回调时,它表明
从服务器检索安全套接字层 (SSL) 证书时遇到一个或多个错误。lpvStatusInformation 参数包含一个标志。有关详细信息,请参阅 lpvStatusInformation 的说明。
现在,lpvStatusInformation
参数被键入为 LPVOID。但是我从文档中的那条语句中得知,在 WINHTTP_CALLBACK_STATUS_SECURE_FAILURE 的情况下,它不被视为指针。
的文档lpvStatusInformation
说:
如果 dwInternetStatus 参数为 WINHTTP_CALLBACK_STATUS_SECURE_FAILURE,则该参数可以是以下值之一。
...而这些值是这些十六进制值之一:1,2,4,8,10,20,40。(见 WinHttp.h)
这对我来说似乎很清楚。我不应该取消引用指针来获取值。保存十六进制值,而 lpvStatusInformation
不是指针。
我是否正确解释了这一点?
我用这种方式编写了我的代码,并且它在过去一直有效。我认为!但是现在我得到了lpvStatusInformation
0x0104f288。这与任何十六进制值都不一样。也不可能通过 OR'ing 可能的值来创建该值(尽管文档没有说明同一个 DWORD 中的多个状态项)。它确实看起来像是指向我的指针。当我取消引用指针时,我得到 0x8,它对应于WINHTTP_CALLBACK_STATUS_FLAG_INVALID_CA
,这至少是有道理的。
问题是,我是否应该取消引用该指针?
这是回调代码:
c++ - 使用 WinHttpSendRequest 发布
如何使用 WinHttpSendRequest 创建要发布的表单?
例如:如果我知道
我如何使用该功能发送它?
c++ - HttpAddUrl 失败并出现 ERROR_SHARING_VIOLATION (32L)
我正在尝试写一个价格监听器。
数据作为“推送”响应到达,即:分块传输编码。我决定使用 http 服务器 api,因为如果短时间内没有数据,异步 wininet 和 winHTTP 读取数据 api 都会关闭连接。
首先,我使用http server api是否正确?
其次,如果我尝试按照 msdn 示例:
我总是遇到共享违规。我是否需要使用 netsh 以某种方式配置连接?如果是这样怎么办?我看到提到配置 http.sys,我什至尝试以管理员身份执行上述代码。
我将非常感谢您的帮助,因为这方面的代码似乎很少!
非常感谢,乔恩