Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.11.2011, 21:51   #1
cyberexpert
 
Регистрация: 08.11.2009
Сообщений: 6
Восклицание

Здравствуйте! Столкнулся с некой проблемой, связанной с HTTP авторизацией, используя tidhttp. Привожу код:

Код:
procedure TForm1.Button2Click(Sender: TObject);
var
  PostData: TStringList;
  Response: TStringStream;
begin
  Response := TStringStream.Create('');
  PostData := TStringList.Create;

  try
    IdHTTP1.Post(Edit1.Text, PostData, Response);
    Memo1.Lines.Text := Response.DataString;
  finally
    Response.Free;
    PostData.Free;
    IdHTTP1.Disconnect;
  end;
end;

procedure TForm1.IdHTTP1Authorization(Sender: TObject;
  Authentication: TIdAuthentication; var Handled: Boolean);
begin
  Handled := true;
  Authentication.Username := 'login';
  Authentication.Password := 'password';
end;
В результате авторизации не происходит. IdHttp мне возвращает "401 Unauthorized". Пожалуйста, помогите найти ошибку!

Быть может я забыл учесть еще какие-либо моменты?

Последний раз редактировалось cyberexpert; 16.11.2011 в 23:37.
cyberexpert вне форума Ответить с цитированием
Старый 17.11.2011, 14:48   #2
KORT
Вот я и
Форумчанин
 
Аватар для KORT
 
Регистрация: 07.04.2007
Сообщений: 501
По умолчанию

Проблема возможно кроется в самом компоненте IdHTTP... я своем крупном проекте использовал модуль, приведенный ниже...Он выполняет те же функции, только более правильно...
Вложения
Тип файла: rar IdHTTPEx.rar (1.9 Кб, 106 просмотров)
Исходники программ - http:\\www.kort.3dn.ru
KORT вне форума Ответить с цитированием
Старый 17.11.2011, 16:42   #3
cyberexpert
 
Регистрация: 08.11.2009
Сообщений: 6
По умолчанию

Спасибо за ответ, но от ошибки по прежнему избавиться не удалось.

Неужели никто не сталкивался с подобной проблемой?

Попробовал использовать synapse. Результат такой же. Видимо я что-то действительно не учел. Привожу код synapse:
Код:
  http := THTTPSend.Create;
  http.UserName := 'login';
  http.Password := 'password';
  http.Document.Write(pointer(postdata)^, length(postdata));
  http.HTTPMethod('POST', 'http://????');
  ShowMessage(http.ResultString);
  http.Free;
В итоге showmessage показывает "Unauthorized". Что делать?

Последний раз редактировалось cyberexpert; 17.11.2011 в 20:55.
cyberexpert вне форума Ответить с цитированием
Старый 17.11.2011, 22:48   #4
N0iD
Пользователь
 
Аватар для N0iD
 
Регистрация: 05.05.2010
Сообщений: 50
По умолчанию

Дайте ссылку там где вы авторизируетесь.
N0iD вне форума Ответить с цитированием
Старый 18.11.2011, 15:22   #5
cyberexpert
 
Регистрация: 08.11.2009
Сообщений: 6
По умолчанию

К сожалению, в целях безопасности, я не могу вам дать ссылку. Зато я могу показать пакеты, которые я отловил сниффером.

Отправляемый HTTP пакет:
Код:
POST /???/???.asmx HTTP/1.0
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 0
Host: ???.???.ru
Accept: text/html, */*
Accept-Encoding: identity
User-Agent: Mozilla/3.0 (compatible; Indy Library)
Authorization: Basic ???
Полученный пакет:
Код:
HTTP/1.1 401 Unauthorized
Connection: keep-alive
Date: Fri, 18 Nov 2011 10:35:27 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
WWW-Authenticate: Digest realm="bidding-monitoring", nonce="shygXmxTRUSafVTdWYa6GQ==", opaque="YZdYm4e37UyY1VoOPYGaLA==", stale=False, algorithm="MD5", qop="auth"
Cache-Control: private
Content-Type: text/html; charset=utf-8
Content-Length: 16

401 Unauthorized
По моему, нужно как-то по другому реализовывать авторизацию. Вопрос только как?
cyberexpert вне форума Ответить с цитированием
Старый 18.11.2011, 16:31   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

ясно же написано алгоритм=MD5
p51x вне форума Ответить с цитированием
Старый 18.11.2011, 19:20   #7
cyberexpert
 
Регистрация: 08.11.2009
Сообщений: 6
По умолчанию

p51x, да я понимаю, но только подскажите, что мне сделать, чтобы использовалось MD5 шифрование? По умолчанию Indy шифрует при помощи Base64. Может надо авторизацию прописать вручную в хедере? Подскажите как это можно сделать. Буду очень благодарен!
cyberexpert вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
indy канкретней Tidhttp bulldog5293 Работа с сетью в Delphi 5 25.01.2011 21:28
Indy. HTTP 404 Not found TwiX Работа с сетью в Delphi 6 14.09.2010 02:30
Indy (TIdHTTP) в D6 и D2009 Legion2003 Работа с сетью в Delphi 7 07.11.2009 18:26
Не дожидаясь ответа сервера (Indy TIdHTTP) Des Работа с сетью в Delphi 2 21.08.2009 09:45
Авторизация c Indy HTTP key' Работа с сетью в Delphi 20 05.12.2008 17:08