Tar*_*ras 6 delphi ssl https soap wsdl
我有一个在Delphi 2009上编写的程序.它使用SOAP over HTTP over SSL.因此,SOAP请求会触发HTTP请求,该请求由Microsoft Internet Explorer通过DLL处理.然后MSIE将弹出一个要求登录的弹出窗口.
但现在我需要在Delphi XE中编译它,我遇到了问题.程序不想登录SSL.根本没有弹出窗口.所以,似乎触发器不想工作.
该错误出现在此代码的第二行:
mantis:=GetMantisConnectPortType(false, mantisurl);
mi := mantis.mc_issue_get(username,password,MantisIssue);
Run Code Online (Sandbox Code Playgroud)
错误是
Project IssueReporter.exe raised exception class ESOAPHTTPException with message 'Authorization Required (401) - 'https://***/mantis/api/soap/mantisconnect.php''.
Run Code Online (Sandbox Code Playgroud)
连接过程列表是
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;
Run Code Online (Sandbox Code Playgroud)
mc_issue_get是其中的一部分
MantisConnectPortType = interface(IInvokable)
Run Code Online (Sandbox Code Playgroud)
有声明:
function mc_issue_get(const username: string; const password: string; const issue_id: Int64): IssueData; stdcall;
Run Code Online (Sandbox Code Playgroud)
在浏览器和2009年编译的旧exe中,一切正常.请帮忙解决这个问题.塔拉斯,基辅
如果Delphi 2009 exe在您测试 Delphi XE exe 的同一台电脑上“工作正常” ,那么在编译 Delphi2009.exe 和编译 DelphiXE 之间,某些代码可能(很可能)发生了更改。 EXE文件。
要测试代码是否有问题,请尝试在 Delphi 2009 中重新编译新代码(来自 Delphi XE 版本)并查看是否有效。如果它有效,那么 Delphi XE 处理证书的方式可能与 Delphi 2009 不同。如果它不起作用,则代码已发生重大更改,在这种情况下,您需要调试从证书存储中获取证书的代码。
证书可以安装到内置 Windows 证书存储中的各个位置。有时,人们只需双击并保留证书导入向导中的默认设置(从而选择自动选择证书位置),这可能会导致证书安装在 current_user 的证书存储中。如果发生这种情况,则 exe 将只能在同一 Windows 用户帐户下运行时才能获取证书。
您收到“需要授权”消息这一事实表明存在证书问题。但是,如果您从不同的 PC 进行测试,那么也可能存在防火墙/企业安全问题。
归档时间: |
|
查看次数: |
5184 次 |
最近记录: |