• talero (15.12.09 21:16) [0]
    Добрый день!
    Необходимо передать xml-текст на защищенное соединение методом post

    sResponse: String;
    fsParams: TFileStream;
    begin
    fsParams := TFileStream.Create('.\test.xml', fmOpenRead or fmShareDenyWrite);
    try
    IdHTTP1.IOHandler:=TIdSSLIOHandlerSocketOpenSSL.Create;
    IdHTTP1.Request.ContentType := 'application/x-www-form-urlencoded';
    sResponse := IdHTTP1.Post('https://www...../xml', fsParams);
    ShowMessage(sResponse);
    except on E: Exception do
    ShowMessage('Error encountered during POST: ' + E.Message);
    end;

    При передаче возникает ошибка
    HTTP/1.1 405 Method Not Allowed
    Подскажите, пожалуйста, как с эти бороться?
  • DVM © (15.12.09 21:33) [1]
    Indy вроде нуждается в библиотеках OpenSSL для поддержки SSL?
  • talero (15.12.09 21:41) [2]
    ну да..
    uses
     Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
     Dialogs, IdIOHandler, IdIOHandlerSocket, IdIOHandlerStack, IdSSL,
     IdSSLOpenSSL, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
     IdHTTP, StdCtrls;
  • DVM © (15.12.09 22:38) [3]

    > ну да..

    Сами то библиотеки доступны программе в момент проверки?
  • talero (15.12.09 22:54) [4]
    да
  • DVM © (15.12.09 23:03) [5]

    > talero   (15.12.09 22:54) [4]

    а они подцепляются нормально? Помню как то намаялся я с ними. Они еще кстати требуют установленного vcredist_x86.exe от MS.
  • talero (15.12.09 23:17) [6]
    может быть я что-то не понимаю? как только я кладу компоненты indy, у меня подключаются эти библиотеки.
  • DVM © (15.12.09 23:22) [7]

    > может быть я что-то не понимаю?

    Может и не понимаешь.

    К проекту подключаются не библиотеки, а заголовочные файлы к ним. Сами библиотеки OpenSSL надо скачать и установить (или положить в папку с программой). Кроме прочего, библиотеки OpenSSL требуют установленного Visual C++ Redistributable Package, который надо именно установить.

    в папке с программой же должны лежать libeay32.dll ssleay32.dll
  • talero (15.12.09 23:47) [8]
    эти файлы libeay32.dll ssleay32.dll лежат в папке.
    т.е. библиотеки ssl грузятся

    разве эта ошибка HTTP/1.1 405 Method Not Allowed связана как-то с подключением библиотеки?
  • talero (15.12.09 23:51) [9]
    405 Method Not Allowed

    The method specified in the Request-Line is not allowed for the resource identified by the Request-URI. The response MUST include an Allow header containing a list of valid methods for the requested resource.
  • Медвежонок Пятачок © (16.12.09 00:00) [10]
    она скорее связана с неправильным урл по которому никто не ждет поста
  • talero (16.12.09 00:11) [11]
    по этому url ждут поста..
  • Медвежонок Пятачок © (16.12.09 00:31) [12]
    без инди и без делфи этот пост работает ?
  • talero (16.12.09 00:39) [13]
    ну да. он работает например, если использовать borland builder C++.
  • Медвежонок Пятачок © (16.12.09 00:42) [14]
    405 Method Not Allowed (Метод не применим)
    Появился в HTTP/1.1.

    Указанный клиентом метод нельзя применить к текущему ресурсу. В ответе сервер должен указать доступные методы в заголовке Allow разделив их запятой.

    Обратите внимание что эту ошибку сервер должен возвращать если метод ему известен, но он не применим к именно к указанному в запросе ресурсу. Если же указанный метод не применим на всём сервере, то клиенту нужно вернуть ответ 501 (Not Implemented).


    остается сравнить запросы из билдера и делфи каким-нибудь http аналайзером
  • talero (16.12.09 03:25) [15]
    попробовали отправить на другую ссылку.
    Теперь такая ошибка

    10.5.1 500 Internal Server Error

    The server encountered an unexpected condition which prevented it from fulfilling the request. ....
  • DVM © (16.12.09 08:11) [16]

    > talero   (15.12.09 23:47) [8]


    > разве эта ошибка HTTP/1.1 405 Method Not Allowed связана
    > как-то с подключением библиотеки?

    Я просто хотел убедится что с технической стороны с SSL проблем нет.
    Сервер к которому ты обращаешься он в Интернет? На него взглянуть можно?
  • Дмитрий Белькевич (22.12.09 13:40) [17]
    Исходя из того, что байты везде одинаковы, разумно сравнить, что отдаёт твой код на сервере и что - плюсовый. Как вариант - сделать эмуляцию сервера и/или посмотреть заголовки каким-нибудь анализатором http.
  • Sha © (25.12.09 18:37) [18]
    Имеет смысл проверить работу без SSL
Есть новые Нет новых   [134439   +32][b:0][p:0.001]