- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一些遗留的 Delphi 代码,它们使用 MSXML 组件将 XML 发布到安全的 Web 服务器。
该代码多年来一直运行良好。最近,我们做了一些更改,使 XML 文件大小变大了一点,但幅度不大。 XML大小本身仍然相对较小,例如100k或更小。
我们检查了服务器日志,发现该故障是身份验证错误,因为用户/密码有时未通过。这种情况间歇性地发生。唯一改变的是 XML 大小增加了一点。
我可以通过增量增长 xml 文件直到 POST 失败来验证这一点。我还可以通过执行相反的操作来进行验证(即,获取一个大文件并逐渐减少它,直到它成功发布)。
下面是一些示例代码。在本例中,我从文件加载 xml。在实际代码中我们使用流,但我确信这不是问题。
有谁知道为什么身份验证数据会在发送到 https 服务器的途中丢失?我似乎记得 MSXML 在某些情况下在协商身份验证方面存在问题,但我认为这与发布的 XML 的大小无关。
procedure TForm1.IntermittentFail;
Var
Resp : TStringStream ;
ole : OleVariant;
HTTPParams: TStrings;
aStream : TStream;
FXMLDoc : TXMLDocument ;
FXMLResp : TXMLDocument;
user, pass, URL, CommonStr : string;
begin
if not(odXMLFile.Execute) then
exit;
user := 'JoeUser';
pass := 'password
URL := 'https://aURL.com';
CommonStr := 'ParameterString';
FXMLDoc := TXMLDocument.Create(Nil);// create the outgoing doc
FXMLResp := TXMLDocument.Create(Nil);// create the response doc
Resp := nil;
FXMLDoc.LoadFromFile(odXMLFile.FileName);
ole := CreateOleObject('MSXML2.ServerXmlHttp');
ole.open('POST' ,URL , false, user, pass);
ole.SetTimeouts( 0, 60000, 300000, 300000);
//ole.SetTimeouts( 300000, 300000, 300000, 300000); //no effect.
ole.setOption(3, CommonStr);
//ole.setrequestheader('connection', 'close'); //no effect //sleep(5000); //no effect
ole.Send(FXMLDoc.XML.Text); //THIS WILL INTERMITTENTLY FAIL.
Resp := TStringStream.Create(ole.ResponseText);
finally
ole := Unassigned;
if Assigned(Resp) then
Resp.Free;
FXMLDoc.Free;
FXMLResp.Free;
end;
end;
谢谢 -
最佳答案
ole.Send(FXMLDoc.XML.Text);
您能得到失败阈值的近似值吗?是否在一个一致的范围内?您可以记录服务器实际收到的内容吗?
话虽如此,我想说您需要检查字节数 - 实际上有多少字节是通过网络发送的?如果大小增加导致间歇性故障,则很可能是您没有一次性发送所有内容 - 您可能必须跟踪实际发送的数量并循环,直到确定整个流内容确实已经传送了。
HTH
关于delphi - MSXML/ServerXmlHttp POST 间歇性失败 (Delphi),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7457247/
我正在使用 VBScript 中的 JSON 正文发出服务器端 HTTP 请求,如下所示: Set oXMLHttp = Server.CreateObject("MSXML2.ServerXMLHT
我收到间歇性的“msxml3.dll 错误‘80070005’访问被拒绝。”错误。该对象总是回发到同一个域。我不太清楚为什么它有时会起作用,为什么有时会失败。这是经典的 ASP - VBScript
我在 JScript/VBA 中使用 MSXML2.ServerXMLHTTP 并想设置客户端证书路径。在 WinHTTP.WinHTTPRequest 中,我可以使用选项“.setClientCer
我在 Windows 7 中安装了三个客户端证书,需要使用一个特定的证书来验证使用 VBA 的 ServerXMLHTTP60 调用。 使用证书的友好名称调用 ServerXMLHTTP60.SetO
对象“MSXML2.ServerXMLHTTP.4.0”从何而来?哪个安装包? 我正在尝试执行以下操作: Set oXMLHTTP = CreateObject("MSXML2.ServerXMLHT
在我的previous question ,我不小心发送了带有 text/xml Content-Type 的 token /值对,导致没有发送任何内容。 Tim C 对这个问题的洞察力非常有帮助。再
有谁知道如何设置 ServerXMLHTTP 请求超时时的默认操作?我正在使用 setTimeouts() 根据 MSDN site 设置超时选项. 理想情况下,我想从头开始再次初始化请求,或者在超时
我正在使用 ServerXMLHTTP 对象对 Excel 2007 vba 脚本发出一些 http 请求。 但我需要连接到使用自签名 SSL 证书的 https 服务器,因此默认情况下我收到消息“证
我正在使用 ServerXmlHttp 从远程位置提取 RSS 源: Dim httpRequest set httpRequest = server.createObject("Msxml2.Ser
我正在尝试编写一个 Excel 加载项,可以将数据从 Web 服务获取到 Excel 中。 要使用它,用户只需键入加载项提供的函数名称即可。我发现两篇用VBA实现HTTP请求的文章:XMLHTTP和
我目前在创建 CreateObject("MSXML2.ServerXMLHTTP.6.0") 时遇到了一些问题目的。 Public Function PrepareHttpRequest(Reque
我目前正在尝试使用 MSXML2.ServerXMLHTTP 发送 POST http 请求。 我需要添加一个自定义 header “Auth”,以便我的请求获得授权,但它似乎不起作用。 这是我的帖子
我支持通过 HTTPS 连接到支付网关的经典 ASP 应用程序。直到最近都没有问题。几天前,服务器 (Windows Server 2003) 上安装了最新更新并导致站点中断。代码片段如下。 Dim
我们有以下链接:http://mvp.sos.state.ga.us/ 我们不想创建一个数据库来复制 MVP 页面的信息,而是希望使用我们自己的表单,然后在幕后将信息发送到上面的站点以使用名为 MSX
我有一些遗留的 Delphi 代码,它们使用 MSXML 组件将 XML 发布到安全的 Web 服务器。 该代码多年来一直运行良好。最近,我们做了一些更改,使 XML 文件大小变大了一点,但幅度不大。
已关闭。此问题旨在寻求有关书籍、工具、软件库等的建议。不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以
使用 VBScript,想与 HTTPS 网站对话,但失败: The client and server cannot communicate, because they do not possess
我正在使用 Confident Technologies Image Captcha,在他们的技术中,我需要发布到他们的服务器,然后服务器将返回 HTML 代码。见:https://login.con
就在我终于明白 Msxml2.XMLHTTP 和 Msxml2.ServerXMLHTTP 的区别的时候 http://support.microsoft.com/kb/290761 XMLHTTP
我正在使用 ServerXMLHTTP 执行 HTTP POST。返回的响应是重定向(特别是 303 See Other)。 ServerXMLHTTP 会自动遵循此重定向,但这会导致身份验证失败,因
我是一名优秀的程序员,十分优秀!