标签: winhttprequest

Msxml2.ServerXMLHTTP和WinHttp.WinHttpRequest之间的区别?

就在我终于理解了Msxml2.XMLHTTP和Msxml2.ServerXMLHTTP之间的区别时

http://support.microsoft.com/kb/290761

XMLHTTP专为客户端应用程序而设计,依赖于基于Microsoft Win32 Internet(WinInet)构建的URLMon.ServerXMLHTTP专为服务器应用程序而设计,依赖于新的HTTP客户端堆栈WinHTTP.ServerXMLHTTP提供可靠性和安全性,并且是服务器安全的.有关更多信息,请参阅MSXML软件开发工具包(SDK)文档.

我突然发现WinHttp.WinHttpRequest ......

http://msdn.microsoft.com/en-us/library/aa382925(VS.85).aspx

Microsoft Windows HTTP服务(WinHTTP)为开发人员提供了HTTP/1.1 Internet协议的服务器支持的高级接口.WinHTTP主要用于与HTTP服务器通信的服务器应用程序,主要用于基于服务器的方案.

那么,这与Msxml2.ServerXMLHTTP有何不同?

(好吧,隐含的问题是我应该使用哪一个...)

xmlhttprequest serverxmlhttp winhttp httpwebrequest winhttprequest

15
推荐指数
1
解决办法
2万
查看次数

从Excel和解析结果中执行HTTP发布

我可以访问API.API将XML帖子作为输入,然后返回带有相关数据的XML响应.

我想要

  1. 将HTTP Post发送到服务器(身份验证和请求将一起发送)
  2. 收到响应(要返回的选项之一是CSV或XML)
  3. 将数据插入适当的行和列,然后使用数据透视表执行数据分析.

我在excel中没有编程背景,但对不同的Web脚本语言,HTML,CSS,Javascript等感到满意.

有任何想法吗?

excel post vba http excel-vba winhttprequest

10
推荐指数
2
解决办法
4万
查看次数

如何使用VBA通过HTTP_POST与Excel发送文件?

这里提出的问题是:如何使用VBA从Excel向服务器发送HTTP POST请求?几乎正是我正在寻找的,除了我试图将大量文​​件发送到服务器.我进一步搜索,发现如何使用VBA通过HTTP帖子上传zip文件?这也很好,但非常令人沮丧 - 这似乎是很多工作(不仅仅是在这里制作HTML表单......).

这里的选项#2:http://www.motobit.com/tips/detpg_post-binary-data-url/(正如上面提到的关于SO的问题中所引用的)似乎它会运作良好,但是当我在JS工作时CSS,我不知道如何在示例中创建FormData(发送到服务器的二进制文件).

谁能帮帮我吗?本质上,我想通过VBA从HTTP内部通过HTTP_POST将3-6个文件从Excel内部发送到期望表单数据的Web服务器上的PHP脚本.处理此问题的HTML表单如下所示:

<form action="upload_file.php" method="post" enctype="multipart/form-data">
  <input name="userfile[]" type="file" /><br />
  <input name="userfile[]" type="file" /><br />
  <input name="userfile[]" type="file" /><br />
  <input type="submit" />
</form>
Run Code Online (Sandbox Code Playgroud)

谢谢大家.

编辑 - 2012年8月2日

我还在努力解决这个问题.我不知道VBA/6,几乎只是基本的JS所以我有点失落.这是我到目前为止所做的:

Sub HTTPInternetPutFile()

    ' create new object with WinHttpRequest for this operation
    Dim WinHttpReq As Object
    Set WinHttpReq = CreateObject("WinHttp.WinHttpRequest.5.1")
    Dim FormFields As String

    ' initialize variables that we will set and pass as parameters
    Dim sfpath
    Dim strURL …
Run Code Online (Sandbox Code Playgroud)

excel vba http-post excel-vba winhttprequest

8
推荐指数
1
解决办法
3万
查看次数

WinHttp.WinHttpRequest添加到内容类型

我正在尝试使用vba WinHttp.WinHttpRequest向kigo的api发出请求,我能够发送请求,但WinHttpRequest在发送请求时更改添加Charset = UTF-8的内容类型,其中kigo的api返回415错误.

我像这样设置内容类型

web_Http.SetRequestHeader "Content-Type", "application/json"
Run Code Online (Sandbox Code Playgroud)

但当我在Wireshark中查看请求时,内容类型就是这样的

Content-Type: application/json; Charset=UTF-8
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

我找到了这个,这与我的问题类似,但我不明白解决方案.

ms-access vba winhttp winhttprequest

7
推荐指数
1
解决办法
4809
查看次数

在 Inno Setup 中无需等待响应的异步 HTTP POST 请求

我有一个 Inno Setup 安装程序,需要在安装过程中进行 API 调用。这会将一些数据发布到远程 API。

POST 调用在 [Code] 部分使用 Pascal 和WinHttpRequest对象执行。API 是 ASP.Net WebAPI 2 (C#)。

我可以完全控制流程的所有部分,即 Inno Setup 脚本、代码部分和 WebAPI。

问题

我可以在没有任何问题的情况下同步进行 POST 调用,但是如果我trueWinHttpRequest.Open()方法上设置 async 标志,则该.Send()方法似乎根本不会执行。


procedure PostData(postural: String);
   var 
     WinHttpReq: Variant;
     ReqContent: String;
   begin
     try
       WinHttpReq := CreateOleObject('WinHttp.WinHttpRequest.5.1');
       ReqContent := 'item=value';
       WinHttpReq.Open('POST', postUrl, true);
       WinHttpReq.SetRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
       WinHttpReq.Send(ReqContent);
     except
     end;
   end;
Run Code Online (Sandbox Code Playgroud)

我在 VisualStudio 调试器中检查了一个断点,并且永远不会调用端点。

在此处和 Google 上搜索时,我只发现了各种异步获取响应的尝试,但我找不到针对此问题的解决方案。我不需要响应,这是一种即发即忘的 API 调用。


简明问题

为什么 API 没有收到调用,我该如何解决这个问题?

谢谢。

post pascal inno-setup http winhttprequest

5
推荐指数
1
解决办法
661
查看次数

WinHttpRequest 超时

我正在使用 AHK 脚本发送一些 POST 请求。我正在尝试获得超时响应,以便向用户弹出一些消息。我不知道如何使用“SetTimeouts”方法和“WaitForResponse”见下面的代码

WebRequest := ComObjCreate("WinHttp.WinHttpRequest.5.1")
WebRequest.SetTimeouts(3000,3000,3000,3000)

openConnection(WebRequest,ip){
   WebRequest.Open("POST", "http://" ip "/cgi/drsLogin",true)
   WebRequest.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded")
   WebRequest.Send("action=login&username=admin&password=admin")
   time := WebRequest.WaitForResponse(2)

   if (time = -1) {
    addTextToGui("Connection Timeout")
   }
   else{
     return
   }
 return
}
Run Code Online (Sandbox Code Playgroud)

autohotkey winhttp winhttprequest

4
推荐指数
1
解决办法
7266
查看次数

.NET中的WinHttp.WinHttpRequest

是否有可以替换或像WinHttp.WinHttpRequest一样工作的内置.NET类?

谢谢!

.net winhttp winhttprequest

3
推荐指数
1
解决办法
9211
查看次数

Post Method + 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
sEntityBody = sEntityBody & "--" & MULTIPART_BOUNDARY & vbCrLf
sEntityBody = sEntityBody & "Content-Disposition: form-data; name=""username""" & vbCrLf & vbCrLf & username & vbCrLf
sEntityBody …
Run Code Online (Sandbox Code Playgroud)

vb6 multipartform-data winhttprequest

3
推荐指数
1
解决办法
2万
查看次数

从OleVariant获取IStream

我正在使用Delphi和WinHTTP来执行HTTP请求以从Internet下载一些文件,我可以执行请求但我不知道如何从返回的OleVariant获取IStream ResponseStream.我花了很多时间谷歌搜索,但我无法弄清楚如何做到这一点.这是我尝试过的:

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.ResponseStream as IStream;

  ShowMessage('success');

  FreeAndNil(instream);
  FreeAndNil(req);

end;
Run Code Online (Sandbox Code Playgroud)

但是我得到了错误[DCC Error] main.pas(45): E2015 Operator not applicable to this operand type(第45行instream := req.ResponseStream as IStream;).

如何从OleVariant中吓跑IStream?

delphi ole istream winhttprequest delphi-2010

3
推荐指数
1
解决办法
1885
查看次数

VBA | WinHttpRequest.5.1 | 忽略 SSL 错误不再起作用

我正在使用 WinHttpRequest.5.1 对象在 excel 365 (16.0.11328.20562) vba 脚本上发出一些 https 请求。

我知道服务器的证书会因为CN错误而发生错误。因此,我使用忽略 ssl 错误的选项来抑制此错误。

我发誓以下代码在两周前有效,现在它抛出此错误:

运行时错误 -2147012727 (80072f89) 证书无效

这是代码(包括:Microsoft WinHTTP 服务,版本 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-Errors
   winHttpReq.Option(4) = 13056

   'I also tested
   'winHttpReq.Option(WinHttpRequestOption_SslErrorIgnoreFlags) = SslErrorFlag_Ignore_All
   'winHttpReq.Option(WinHttpRequestOption_SslErrorIgnoreFlags) = SslErrorFlag_CertCNInvalid

   winHttpReq.Open "GET", url, False

   winHttpReq.Send ("")

   Debug.Print winHttpReq.ResponseText

End Sub
Run Code Online (Sandbox Code Playgroud)

我不明白为什么我会收到证书无效错误,尽管 ssl-errors 应该被忽略。

我希望您知道为什么会发生这种情况,并提前感谢您的回答。

error-handling excel ssl vba winhttprequest

3
推荐指数
1
解决办法
2104
查看次数