-
Добрый день!
Необходимо передать 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
Подскажите, пожалуйста, как с эти бороться?
-
Indy вроде нуждается в библиотеках OpenSSL для поддержки SSL?
-
ну да..
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, IdIOHandler, IdIOHandlerSocket, IdIOHandlerStack, IdSSL,
IdSSLOpenSSL, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
IdHTTP, StdCtrls;
-
> ну да..
Сами то библиотеки доступны программе в момент проверки?
-
да
-
> talero (15.12.09 22:54) [4]
а они подцепляются нормально? Помню как то намаялся я с ними. Они еще кстати требуют установленного vcredist_x86.exe от MS.
-
может быть я что-то не понимаю? как только я кладу компоненты indy, у меня подключаются эти библиотеки.
-
> может быть я что-то не понимаю?
Может и не понимаешь.
К проекту подключаются не библиотеки, а заголовочные файлы к ним. Сами библиотеки OpenSSL надо скачать и установить (или положить в папку с программой). Кроме прочего, библиотеки OpenSSL требуют установленного Visual C++ Redistributable Package, который надо именно установить.
в папке с программой же должны лежать libeay32.dll ssleay32.dll
-
эти файлы libeay32.dll ssleay32.dll лежат в папке.
т.е. библиотеки ssl грузятся
разве эта ошибка HTTP/1.1 405 Method Not Allowed связана как-то с подключением библиотеки?
-
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.
-
она скорее связана с неправильным урл по которому никто не ждет поста
-
по этому url ждут поста..
-
без инди и без делфи этот пост работает ?
-
ну да. он работает например, если использовать borland builder C++.
-
405 Method Not Allowed (Метод не применим)
Появился в HTTP/1.1.
Указанный клиентом метод нельзя применить к текущему ресурсу. В ответе сервер должен указать доступные методы в заголовке Allow разделив их запятой.
Обратите внимание что эту ошибку сервер должен возвращать если метод ему известен, но он не применим к именно к указанному в запросе ресурсу. Если же указанный метод не применим на всём сервере, то клиенту нужно вернуть ответ 501 (Not Implemented).
остается сравнить запросы из билдера и делфи каким-нибудь http аналайзером
-
попробовали отправить на другую ссылку.
Теперь такая ошибка
10.5.1 500 Internal Server Error
The server encountered an unexpected condition which prevented it from fulfilling the request. ....
-
> talero (15.12.09 23:47) [8]
> разве эта ошибка HTTP/1.1 405 Method Not Allowed связана
> как-то с подключением библиотеки?
Я просто хотел убедится что с технической стороны с SSL проблем нет.
Сервер к которому ты обращаешься он в Интернет? На него взглянуть можно?
-
Исходя из того, что байты везде одинаковы, разумно сравнить, что отдаёт твой код на сервере и что - плюсовый. Как вариант - сделать эмуляцию сервера и/или посмотреть заголовки каким-нибудь анализатором http.
-
Имеет смысл проверить работу без SSL