- выгрузка файлов с сервера
- загрузка файлов на сервер
- 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