libcurl for Clarion
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Основной тред
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Основной тред
- Дед Пахом
- Старичок
- Сообщения: 3236
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 13 раз
- Поблагодарили: 45 раз
- Контактная информация:
libcurl for Clarion
Вроде все основные функции закрыл:
- выгрузка файлов с сервера
- загрузка файлов на сервер
- HTTP GET/POST с возможностью прочитать ответ сервера
- Поддержка SSL
Тестировал на протоколах http, https, ftp, sftp, ftpes.
Краткий туториал в файле \doc\How-To.txt.
- выгрузка файлов с сервера
- загрузка файлов на сервер
- HTTP GET/POST с возможностью прочитать ответ сервера
- Поддержка SSL
Тестировал на протоколах http, https, ftp, sftp, ftpes.
Краткий туториал в файле \doc\How-To.txt.
Последний раз редактировалось Дед Пахом 31 Октябрь 2020, 20:39, всего редактировалось 1 раз.
С уважением, ДП
- Игорь Столяров
- Ветеран движения
- Сообщения: 7680
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 26 раз
- Поблагодарили: 68 раз
libcurl for Clarion
Спасибо ! А можно вопрос, я еще не долез в этом месте в описании ...
cURL реализует только операции обмена файлами ?
Можно ли получить список файлов в папке на сервере ?
Удалить файл в папке на сервере ?
Спасибо. И извиняюсь, за возможную тупость вопросов.
cURL реализует только операции обмена файлами ?
Можно ли получить список файлов в папке на сервере ?
Удалить файл в папке на сервере ?
Спасибо. И извиняюсь, за возможную тупость вопросов.
Make Clarion Great Again !
- Дед Пахом
- Старичок
- Сообщения: 3236
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 13 раз
- Поблагодарили: 45 раз
- Контактная информация:
libcurl for Clarion
Да, в curl всё это есть, у меня нет пока Нельзя объять необъятное вот так сразу
С уважением, ДП
- Дед Пахом
- Старичок
- Сообщения: 3236
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 13 раз
- Поблагодарили: 45 раз
- Контактная информация:
libcurl for Clarion
Вы будете смеяться, но список файлов можно получить уже сейчас, прямо в демке, надо только указать url со слэшем на конце, чтобы дать понять -- нам нужен каталог. Вот что я получил в выходном файле:
-rw-r--r-- 1 ded ded 169 Nov 12 18:58 response.txt
drwxr-x--x 2 ded ded 4096 Nov 12 18:58 .
dr-x-----x 3 ded mgrsecure 4096 Nov 11 14:29 ..
-rw------- 1 ded ded 47 Nov 11 14:31 .bash_history
С уважением, ДП
libcurl for Clarion
Большое спасибо за библиотеку!
В ЕГАИС используются команды:
1) Команда: curl -x DELETE http://localhost:8080/opt/in/201 - удаление из базы
2) Команда: curl -f "xml_file=@cheque.xml" http://localhost:8080/xml - отправка файла через http
Заранее благодарен.
В ЕГАИС используются команды:
1) Команда: curl -x DELETE http://localhost:8080/opt/in/201 - удаление из базы
2) Команда: curl -f "xml_file=@cheque.xml" http://localhost:8080/xml - отправка файла через http
Но если продолжите, то начните пожалуйста с этих команд.
Заранее благодарен.
- Дед Пахом
- Старичок
- Сообщения: 3236
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 13 раз
- Поблагодарили: 45 раз
- Контактная информация:
libcurl for Clarion
А с этим-то какие проблемы?pansoft писал(а): 2) Команда: curl -f "xml_file=@cheque.xml" http://localhost:8080/xml - отправка файла через http
С уважением, ДП
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4873
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 10 раз
- Поблагодарили: 43 раза
libcurl for Clarion
Если кому интересно, открыт отдельный опенсорсный проект для работы с командной строкой curl. Запуск осуществляется через процесс, используется обычное окно с прогрессом и возможностью прерывания вместо dos-окна (как при запуске через run). Поддерживается отправка почты через ssl-соединения с прикреплением файлов. Место прописки класса:
http://www.finsoftrz.ru/download/clarion/fsCurl.7z
Пример использования для отправки почты:
http://www.finsoftrz.ru/download/clarion/fsCurl.7z
Пример использования для отправки почты:
Код: Выделить всё
test_r routine
DATA
fsCurlL &fsCurl
lor:ok byte
CODE
fsCurlL &= new(fsCurl)
fsCurlL.init()
fsCurlL.WindowTitle='Отправка письма...'
fsCurlL.SetUrl('smtps://smtp.yandex.ru:465','userName','userPswd')
fsCurlL.SetMailHeader('adress1@yandex.ru','adress2@gmail.com','Отправитель','Получатель')
fsCurlL.SetMailText('Тест','Текст тестового сообщения...')
lor:ok=fsCurlL.MailHeaderAdd()
if lor:ok=1
lor:ok=fsCurlL.MailFileAdd('1.xls')
.
if lor:ok=1
lor:ok=fsCurlL.MailFileAdd('1.txt')
.
if lor:ok=1
if fsCurlL.MailSend()=1
message('Успех!')
.
.
fsCurlL.kill
dispose(fsCurlL)
C6/C11, ШВС, tps/btrieve.
- Дед Пахом
- Старичок
- Сообщения: 3236
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 13 раз
- Поблагодарили: 45 раз
- Контактная информация:
libcurl for Clarion
v1.01
v1.01
- .SetCustomRequest method, for customizing the get command like HTTP: DELETE, TRACE and others
- .GetResponseCode method returns HTTP or FTP response code
- constants to use in .SetOpt(curlopt_constant):
- CURLOPT_HEADER throw the header out too
- CURLOPT_NOBODY use HEAD to get http document
- CURLOPT_POST HTTP POST method
- CURLOPT_DIRLISTONLY (CURLOPT_FTPLISTONLY) bare names when listing directories
- CURLOPT_APPEND Append instead of overwrite on upload!
- CURLOPT_PUT HTTP PUT
С уважением, ДП
- Игорь Столяров
- Ветеран движения
- Сообщения: 7680
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 26 раз
- Поблагодарили: 68 раз
libcurl for Clarion
Можно уточнить: под Windows x64 эта технология будет работать ?
Make Clarion Great Again !
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4873
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 10 раз
- Поблагодарили: 43 раза
libcurl for Clarion
Да, работает. Только что проверил на всякий случай отправку почты с файлами из тестовой программы.
C6/C11, ШВС, tps/btrieve.
libcurl for Clarion
При выполнении в командной строкеДед Пахом писал(а):А с этим-то какие проблемы?pansoft писал(а): 2) Команда: curl -f "xml_file=@cheque.xml" http://localhost:8080/xml - отправка файла через http
curl.exe -F "xml_file=@client.xml" http://localhost:8080/opt/in/QueryPartner после отправки файла сразу приходит ответ, как при
SendRequest(Send, HttpHeaders, SSLInfo, bGetServerResponse, bSaveServerResponseToFile).
, а WriteFile возвращает 0 или Номер ошибки.
- Дед Пахом
- Старичок
- Сообщения: 3236
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 13 раз
- Поблагодарили: 45 раз
- Контактная информация:
libcurl for Clarion
Ну WriteFile всё-таки для Ftp в основном, для Http надо файлы слать через POST запрос c параметрами:
curl.AddHttpHeader('Content-Type: multipart/form-data')
curl.SetHttpHeaders()
postParams = 'xml_file='& filecontent
res = curl.SendRequest(url, postParams, outfile)
С уважением, ДП
libcurl for Clarion
Выдает ошибку:
Я полазил по форумам пишут что при multipart/form-data
PostParams должен быть массивом.
полный текст на http://ru.php.net/curl_setopt
ДП, спасибо за быстрые ответы!
Код: Выделить всё
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
<title>Error 500 Server Error</title>
</head>
<body><h2>HTTP ERROR 500</h2>
<p>Problem accessing /opt/in/QueryPartner. Reason:
<pre> Server Error</pre></p><h3>Caused by:</h3><pre>javax.servlet.ServletException: Content-Type != multipart/form-data
at org.eclipse.jetty.server.Request.getParts(Request.java:2051)
at org.eclipse.jetty.server.Request.getPart(Request.java:2043)
at es.programador.http.ClientDocumentServlet.a(ClientDocumentServlet.java:201)
at es.programador.http.ClientDocumentServlet.doPost(ClientDocumentServlet.java:96)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:755)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:684)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:501)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:533)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:255)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
at org.eclipse.jetty.server.Server.handle(Server.java:370)
at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:494)
at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:982)
at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1043)
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:865)
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240)
at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:667)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
at java.lang.Thread.run(Unknown Source)
</pre>
<hr /><i><small>Powered by Jetty://</small></i><br/>
</body>
</html>
PostParams должен быть массивом.
Код: Выделить всё
<?php
$ch = curl_init();
$data = array('name' => 'Foo', 'file' => '@/home/user/test.png');
curl_setopt($ch, CURLOPT_URL, 'http://localhost/upload.php');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_exec($ch);
?>
ДП, спасибо за быстрые ответы!
- Admin
- Администратор
- Сообщения: 3996
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 46 раз
- Поблагодарили: 26 раз
- Контактная информация:
libcurl for Clarion
Попробуйте задать по принципу:
Код: Выделить всё
PostParams = 'data=text&data2=text2&data3=text%20width%20space'
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
libcurl for Clarion
Я так понял надо добавить '%20width%20space'Admin писал(а):Попробуйте задать по принципу:Код: Выделить всё
PostParams = 'data=text&data2=text2&data3=text%20width%20space'
Попробовал:
PostParams ='xml_file=@client.xml%20width%20space'
И
PostParams ='data=text&xml_file=@client.xml%20width%20space'
и
PostParams ='xml_file=@client.xml%data=text%20width%20space'
Ошибка та же.