gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 16:11:05 26 4
gpt4 key购买 nike

我必须在 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com