Delphi XE SOAP SSL

Delphi XE SOAP SSL,第1张

概述我有一个在Delphi 2009上编写的程序.它使用SOAP over HTTP over SSL.因此,SOAP请求会触发HTTP请求,该请求由Microsoft Internet Explorer通过DLL处理.然后MSIE将d出一个要求登录的d出窗口. 但现在我需要在Delphi XE中编译它,我遇到了问题.程序不想登录SSL.根本没有d出窗口.所以,似乎触发器不想工作. 该错误出现在此代码 我有一个在Delphi 2009上编写的程序.它使用SOAP over http over SSL.因此,SOAP请求会触发http请求,该请求由Microsoft Internet Explorer通过DLL处理.然后MSIE将d出一个要求登录的d出窗口.

但现在我需要在Delphi XE中编译它,我遇到了问题.程序不想登录SSL.根本没有d出窗口.所以,似乎触发器不想工作.

该错误出现在此代码的第二行:

mantis:=GetMantisConnectPortType(false,mantisurl);mi := mantis.mc_issue_get(username,password,MantisIssue);

错误是

Project IssueReporter.exe raised exception class ESOAPhttpException with message 'Authorization required (401) - 'https://***/mantis/API/soap/mantisconnect.PHP''.

连接过程列表是

function GetMantisConnectPortType(UseWSDL: Boolean; Addr: string; httpRIO: ThttpRIO): MantisConnectPortType;const  defWSDL = 'https://***/mantis/API/soap/mantisconnect.PHP?wsdl';  defURL  = 'https://***/mantis/API/soap/mantisconnect.PHP';  defSvc  = 'MantisConnect';  defPrt  = 'MantisConnectPort';var  RIO: ThttpRIO;begin  Result := nil;  if (Addr = '') then  begin    if UseWSDL then      Addr := defWSDL    else      Addr := defURL;  end;  if httpRIO = nil then    RIO := ThttpRIO.Create(nil)  else    RIO := httpRIO;  try    Result := (RIO as MantisConnectPortType);    if UseWSDL then    begin      RIO.WSDLLocation := Addr;      RIO.Service := defSvc;      RIO.Port := defPrt;    end else      RIO.URL := Addr;  finally    if (Result = nil) and (httpRIO = nil) then      RIO.Free;  end;end;

mc_issue_get是其中的一部分

MantisConnectPortType = interface(IInvokable)

有声明:

function  mc_issue_get(const username: string; const password: string; const issue_ID: Int64): IssueData; stdcall;

在浏览器和2009年编译的旧exe中,一切正常.请帮忙解决这个问题.
塔拉斯,基辅

解决方法 如果Delphi 2009 exe在您测试Delphi XE exe时从同一台PC“工作正常”,那么一些代码可能(很可能)在Delphi2009.exe编译时和编译DelphiXE的时间之间发生了变化.可执行程序.

要测试代码是否是问题,请尝试在Delphi 2009中重新编译新代码(来自Delphi XE版本),看看是否有效.如果它可以工作,那么Delphi XE可能会以与Delphi 2009不同的方式处理证书.如果它不起作用,那么代码已经发生了很大变化,在这种情况下,您需要调试从证书存储中获取证书的代码.

证书可以安装在内置windows证书存储区中的各个位置.有时,人们只需双击,并在证书导入向导中保留默认值(从而选择自动选择证书位置),这可能导致证书安装在current_user的证书库中.如果发生这种情况,那么只有在相同的windows用户帐户下运行时,exe才能获取证书.

您收到“需要授权”消息的事实表明存在证书问题.但是,如果您使用不同的PC进行测试,那么也可能存在防火墙/企业安全问题.

总结

以上是内存溢出为你收集整理的Delphi XE SOAP SSL全部内容,希望文章能够帮你解决Delphi XE SOAP SSL所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/1273437.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-08
下一篇2022-06-08

发表评论

登录后才能评论

评论列表(0条)

    保存