
但现在我需要在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中重新编译新代码(来自Delphi XE版本),看看是否有效.如果它可以工作,那么Delphi XE可能会以与Delphi 2009不同的方式处理证书.如果它不起作用,那么代码已经发生了很大变化,在这种情况下,您需要调试从证书存储中获取证书的代码.
证书可以安装在内置windows证书存储区中的各个位置.有时,人们只需双击,并在证书导入向导中保留默认值(从而选择自动选择证书位置),这可能导致证书安装在current_user的证书库中.如果发生这种情况,那么只有在相同的windows用户帐户下运行时,exe才能获取证书.
您收到“需要授权”消息的事实表明存在证书问题.但是,如果您使用不同的PC进行测试,那么也可能存在防火墙/企业安全问题.
总结以上是内存溢出为你收集整理的Delphi XE SOAP SSL全部内容,希望文章能够帮你解决Delphi XE SOAP SSL所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)