| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Сети > Вопрос по пересылке данных с помощью wininet |
| Автор: Bibigon 4.11.2008, 20:13 |
| Есть следующий пример кода JS, который хочу перевести на Delphi: var xmlhttp = Server.CreateObject ("MSXML2.ServerXMLHTTP"); xmlhttp.setOption(3, 'option'); xmlhttp.open('POST', 'https://blabla.ru/page.asp', false); xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xmlhttp.send(data); =========================================================== Дельфи : var hOpen, hConnect, hRequest: hInternet; begin hOpen := InternetOpen('test', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0); hConnect := InternetConnect(hOpen, pchar('blabla.ru'), 80 , '', '',INTERNET_SERVICE_HTTP, 0, 0); hRequest := HttpOpenRequest(hConnect, 'POST', pchar('page.asp'), HTTP_VERSION, '', nil, INTERNET_FLAG_SECURE, 0); HttpSendRequest(hRequest, 'Content-Type: application/x-www-form-urlencoded', 47, PChar(data), Length(data)) ; .... Не могу понять как перевести xmlhttp.setOption(3, 'option'); Заранее спасибо. |
| Автор: ecspertiza 5.11.2008, 15:35 | ||
вопрос в том что тебе конкретно надо сделать, setOption насколько я понимаю, задает какието параметры, может тебе эта строка и вовсе не понадобится, да и тем более, переводить код это ужас, уже давно есть готовые примеры, тебе вроде отправка данных нужна.
вот эту функцию я использовал для отправки файла по HTTPS тебе нада поменять INTERNET_DEFAULT_HTTPS_PORT на INTERNET_DEFAULT_HTTP_PORT с параметрами я думаю разберёшся |
| Автор: Bibigon 5.11.2008, 16:25 |
| xmlhttp.setOption(3, 'option'); Это поле связано с сертификатом для SSL. Что писать в нем для Delphi я и пытаюсь понять. |
| Автор: ecspertiza 6.11.2008, 09:47 |
| так тебе надо данные передать по SSL? Насколько я знаю протокол SSL передается по таму же порту что и Https, значит пример остается верным т.к. использовался для передачи по Https. а сертификаты задаются вот в этой строке. hResourceHandle:=HttpOpenRequest(hConnectHandle, 'POST', szPath, HTTP_VERSION, nil, nil, INTERNET_FLAG_RELOAD or INTERNET_FLAG_SECURE or INTERNET_FLAG_IGNORE_CERT_CN_INVALID or INTERNET_FLAG_IGNORE_CERT_DATE_INVALID, 0); конкретно: NTERNET_FLAG_RELOAD or INTERNET_FLAG_SECURE or INTERNET_FLAG_IGNORE_CERT_CN_INVALID or INTERNET_FLAG_IGNORE_CERT_DATE_INVALID а поточнее узнать тебе поможет google, там про WinInet, до фига всего правда примеры в основном на C++. Добавлено через 5 минут и 10 секунд INTERNET_FLAG_CACHE_IF_NET_FAIL Получает ресурс из кэша, если он недоступен в Internet. INTERNET_FLAG_KEEP_CONNECTION Флаг сохранения настроек авторизации на протяжении подключения. INTERNET_FLAG_NEED_FILE Кэширует файл или создаёт временный файл для получаемого ресурса. INTERNET_FLAG_PRAGMA_NOCACHE Считывает данные с нужного сервера, минуя кэш прокси-сервера. INTERNET_FLAG_RELOAD Считывает данные с сервера, а не из кэша системы. вот описание некоторых флагов. |