delphi - SOAP 消息 - 在 http header 中添加身份验证

标签 delphi http soap firemonkey delphi-xe8

我必须在 http 请求中向需要基本身份验证的 WebService 发送 SOAP 消息,但我找不到执行此操作的方法。

经过搜索,我找到了一些解决方案和解决方法,但都没有用。

这是我的代码:

procedure TMyForm.HTTPRIOHTTPWebNode1BeforePost(
 const HTTPReqResp: THTTPReqResp; Data: Pointer);
var
 UserName: string;
 PassWord: string;
begin

UserName := 'aaa';
Password := 'bbb';

if not InternetSetOption(Data,
                  INTERNET_OPTION_USERNAME,
                  PChar(UserName),
                  Length(UserName)) then
 raise Exception(SysErrorMessage(GetLastError));

if not InternetSetOption(Data,
                  INTERNET_OPTION_PASSWORD,
                  PChar(Password),
                  Length(Password)) then
 raise Exception(SysErrorMessage(GetLastError));


end;

我尝试在 HTTPRIO.HTTPWebNode 中设置用户名和密码,但它会忽略它们,并且不会引发异常。 Web 服务一直告诉我缺少凭据。

我设法用c#做到了

protected override WebRequest GetWebRequest(Uri uri)
{

    HttpWebRequest request = (HttpWebRequest)base.GetWebRequest(uri);
    Byte[] credentialBuffer = new UTF8Encoding().GetBytes("aaa:bbb");
    request.Headers.Add("Authorization", string.Format("Basic {0}", Convert.ToBase64String(credentialBuffer)));
    return request;

}

但我找不到在 delphi 中执行此操作的方法。

我是不是遗漏了什么或者做错了什么?

我将 DelphiXE8 与 Firemonkey 结合使用。

最佳答案

好的,感谢评论,我做到了。

procedure TMyForm.HTTPRIOHTTPWebNode1BeforePost(
 const HTTPReqResp: THTTPReqResp; Data: Pointer);
var
 auth: String;
begin

  auth := 'Authorization: Basic ' + idEncoderMIME1.EncodeString('aaa:bbb' );
  HttpAddRequestHeaders(Data, PChar(auth), Length(auth), HTTP_ADDREQ_FLAG_ADD);

end;

我只是在标题中添加“授权:基本”+ 用户名:密码编码。

其实我只是做了我在c#中做的事情,但之前一直想不通。

谢谢

关于delphi - SOAP 消息 - 在 http header 中添加身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34360581/

相关文章:

Delphi firemonkey进程间通信有可能吗?

sqlite - 如何在sQlite.sdb(FireDac)中插入字符串?

android - 在 Android 中从基于 SOAP 的 .NET Web 服务接收自定义对象

.net - 使用 ASP.NET 使用 PHP SOAP WebService

java - 在android中使用soap webservices的mysql数据库连接

delphi - 将 TListBox 选定行的内容存储在变量上

android - Delphi XE5 和电子邮件

java - 如何用 Java 构建一个互联网下载管理器?

python - 子类化 static.File

javascript - 使用来自 Node/Express 请求的 JSON Web 服务?