- выгрузка файлов с сервера
- загрузка файлов на сервер
- HTTP GET/POST с возможностью прочитать ответ сервера
- Поддержка SSL
Тестировал на протоколах http, https, ftp, sftp, ftpes.
Краткий туториал в файле \doc\How-To.txt.
Модератор: Дед Пахом
Код: Выделить всё
PROGRAM
PRAGMA('project(#pragma link(libcurl.lib))')
INCLUDE('libcurl.inc')
MAP
END
curl TCurlHttpClass
host STRING('https://diadoc-api.kontur.ru')
postfields STRING('login=user@skbkontur.ru&password=qwerty')
rc CURLcode, AUTO
response STRING(256), AUTO
CODE
curl.Init()
curl.AddHttpHeader('Authorization: DiadocAuth ddauth_api_client_id=testClient-8ee1638deae84c86b8e2069955c2825a')
curl.SetHttpHeaders()
curl.SetOpt(CURLOPT_POSTFIELDS, 'Двоичное DER-представление X.509-сертификата пользователя')
curl.SetOpt(CURLOPT_POSTFIELDSIZE, LEN(CLIP('Двоичное DER-представление X.509-сертификата пользователя')))
curl.SetCustomRequest('POST')
curl.SetSSLVerifyPeer(FALSE)
curl.SetSSLVerifyHost(FALSE)
rc = curl.SendRequestStr(host &'/Authenticate', postfields, response)
IF rc = CURLE_OK
MESSAGE('Response: '& CLIP(response), 'Test', ICON:Asterisk)
ELSE
MESSAGE('Fail: '& curl.StrError(rc), 'Test', ICON:Exclamation)
END
Похоже на вызов DISPOSE(ref), где ref уже испорчена (обнулена к примеру).
Насколько помню, дебаг всегда включён, вывод идёт в OutputDebugString.
А это вполне возможно, потому что нарушена логика - если уж вызвали SetHTTPHeaders, то не делайте FreeHTTPHeaders до вызова SendRequest, потому что SendRequest будет использовать хендл списка заголовков.
вот так должно работать (пока не могу проверить):Pass a NULL to this option to reset back to no custom headers.
Код: Выделить всё
TCurlClass.FreeHttpHeaders PROCEDURE()
CODE
SELF.headers.Free()
SELF.SetOpt(CURLOPT_HTTPHEADER, 0) !-- reset back to no custom headers