- 0
Двойной запрос NetHTTPClient
-
Похожий контент
-
- 4 ответа
- 2 883 просмотра
-
thttpclient [THttpClient] Как работать с Cookie в HTTPClient?
От GoldenEalge,
- httpclient
- cookies
- (и ещё 1 )
- 7 ответов
- 3 353 просмотра
-
- 20 ответов
- 2 630 просмотров
-
-
Последние посетители 0 пользователей онлайн
- Ни одного зарегистрированного пользователя не просматривает данную страницу
Вопрос
Rusland
Пытаюсь авторизоваться на локальном сервере:
type TResponser = record Response: string; Code: integer; end; ... procedure TFrmLogin.OnAuthEvent(const Sender: TObject; AnAuthTarget: TAuthTargetType; const ARealm, AURL: string; var AUserName, APassword: string; var AbortAuth: Boolean; var Persistence: TAuthPersistenceType); var MyCredential: TCredentialsStorage.TCredential; begin MyCredential := TNetHTTPClient(Sender).CredentialsStorage.FindAccurateCredential(AnAuthTarget, ''); AUserName := MyCredential.UserName; APassword := MyCredential.Password; end; procedure TFrmLogin.OnValidateServerCertificate( const Sender: TObject; const ARequest: TURLRequest; const Certificate: TCertificate; var Accepted: Boolean); begin Accepted:=true; end; function TFormLogin.LoginToServer(login,pass:String):TResponser; var aResponse: IHTTPResponse; aResponser: TResponser; sStream: TStringStream; aHttpClient: TNetHTTPClient; begin try aHTTPClient := TNetHTTPClient.Create(nil); aHTTPClient.OnAuthEvent:=OnAuthEvent; aHTTPClient.OnValidateServerCertificate:=OnValidateServerCertificate; aHTTPClient.CredentialsStorage.AddCredential (TCredentialsStorage.TCredential.Create(TAuthTargetType.Server,'', sURL, login, pass)); aHTTPClient.AllowCookies :=true; aHTTPClient.AcceptLanguage:='ru-RU;q=0.8,en-US;q=0.5,en;q=0.3'; aHTTPClient.ContentType :='text/json'; aHTTPClient.AcceptCharset :='utf-8'; aHTTPClient.Accept :='text/json,text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'; try sStream := TStringStream.Create(); try aResponse := aHttpClient.Get(sURL, sStream); aResponser.Response:=sStream.DataString; aResponser.Code:=aResponse.StatusCode; // тут получаю код 200 Result:=aResponser; except end; finally sStream.Free; end; finally aHttpClient.Free; end; end;
После get cразу получаю код 200 (от ответного кода я решаю авторизован я или нет). Однако на сервер реально приходит 2 запроса: первый без basic authorization (и на него дается в ответ код 401), второй с basic authorization (на него уже в ответ код 200).
Почему проходит два запроса, когда в программе я вижу только один?
Ссылка на комментарий
7 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.