Delphi XE 5 - THTTPRIO - упреждающее соединение - PullRequest
1 голос
/ 26 февраля 2020

У меня есть клиент веб-службы, созданный с помощью DELPHI XE 5, я использовал THTTPRIO, импортировал wsdl и создал файлы ".pas". Сервер веб-службы запрашивает упреждающую аутентификацию basi c (которая отлично работает с SoapUI); Я знаю, как сделать аутентификацию с помощью пользователя и пароля THTTPReqResp.

rio := THTTPRIO.Create(nil);
HTTPReqResp1 := THTTPReqResp.Create(rio);
HTTPReqResp1.UserName := sUserName;
HTTPReqResp1.Password := sPasswordEncrypted;

Но я не подключаюсь к веб-сервису, потому что не знаю, как сделать упреждающий и если это возможно в Delphi.

Может кто-нибудь мне помочь? :)

1 Ответ

0 голосов
/ 02 марта 2020

Я только что нашел, как можно использовать «preemprive» -соединение в DELPHI. Вы должны изменить OnBeforePost вашего "rio.HTTPWebNode" следующим образом:

var
rio  : THTTPRIO;
HTTPReqResp1: THTTPReqResp;
uselessObject: TUselessClass;
try
    rio := THTTPRIO.Create(nil);
    uselessObject := TUselessClass.Create();
    rio.HTTPWebNode.GetHTTPReqResp.OnBeforePost := 
    uselessObject.HTTPRIOHTTPWebNode1BeforePost;

С помощью этой процедуры:

procedure TUselessClass.HTTPRIOHTTPWebNode1BeforePost(const HTTPReqResp: THTTPReqResp; Data: Pointer);
var
    auth,toEncode: string;
begin
    toEncode := Format('%s:%s',[sUserName,sPasswordEncrypted]);
    auth := 'Authorization: Basic ' + TIdEncoderMIME.EncodeString(toEncode);
    HttpAddRequestHeaders(Data, PChar(auth), Length(auth), HTTP_ADDREQ_FLAG_ADD);
end;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...