- выгрузка файлов с сервера
- загрузка файлов на сервер
- HTTP GET/POST с возможностью прочитать ответ сервера
- Поддержка SSL
Тестировал на протоколах http, https, ftp, sftp, ftpes.
Краткий туториал в файле \doc\How-To.txt.
Модератор: Дед Пахом
А в лог dbgview что пишется?Игорь Столяров писал(а): 18 Август 2018, 16:51Всё выполняется, получаю ответ: Success, see file post_response.txt for details !
Т.е. всё хорошо, но файла post_response.txt - НЕТ. Совсем. Нигде.
Подскажите пожалуйста где его искать (или как его включить) ?
DebugView https://docs.microsoft.com/en-us/sysint ... /debugview - скачать и запустить, весь вывод через API OutputDebugString() пойдёт в него. libcurl по умолчанию фигачит туда всё, полезно для отладки.
Код: Выделить всё
curl --header "Content-Type: text/xml;charset=UTF-8" --data @test.xml http://npchk.nalog.ru/FNSNDSCAWS_2?wsdl -o resp.xml
Код: Выделить всё
<?xml version='1.0' encoding='UTF-8'?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<NdsResponse2 xmlns="http://ws.unisoft/FNSNDSCAWS2/Response" DTActFL="16.08.2018" DTActUL="16.08.2018"><NP INN="7812014560" KPP="770701001" DT="20.03.2018" State="0"/>
</NdsResponse2>
</S:Body>
</S:Envelope>
Код: Выделить всё
<?xml version='1.0' encoding='UTF-8'?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<S:Fault xmlns:ns4="http://www.w3.org/2003/05/soap-envelope"><faultcode>S:Client</faultcode>
<faultstring>Couldn't create SOAP message due to exception: XML reader error: com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prolog
at [row,col {unknown-source}]: [1,0]
</faultstring>
</S:Fault>
</S:Body>
</S:Envelope>
То же и с http://www.clarionlife.net/curl/index.php - не передаётся файл в сервис (index.php), всё заканчивается на сервере, который выдаёт "HTTP/1.1 301 Moved Permanently" и возвращает html с этой ошибкой. Сервер nalog.ru не утруждает себя подобным дружелюбным поведением.
С этого и надо было начинать
Код: Выделить всё
curl.Init()
url = 'http://npchk.nalog.ru/FNSNDSCAWS_2?wsdl' ! ЗАМЕНИЛ
respfile = 'post_response.txt'
curl.AddHttpHeader('Content-Type: text/xml;charset=UTF-8')
curl.SetHttpHeaders()
res = curl.SendRequest(url, '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:req="http://ws.unisoft/FNSNDSCAWS2/Request"> <soapenv:Header/> <soapenv:Body> <req:NdsRequest2> <!--1 to 10000 repetitions:--> <req:NP INN="7812014560" KPP="770701001" DT="18.08.2018"/> </req:NdsRequest2> </soapenv:Body> </soapenv:Envelope>', respfile)
Код: Выделить всё
curl.Init()
url = 'http://npchk.nalog.ru/FNSNDSCAWS_2?wsdl' ! ЗАМЕНИЛ
infile = 'test.xml'
respfile = 'post_response.txt'
res = curl.SendFile(url, infile, 'text/xml;charset=UTF-8', respfile)
Классно ! Спасибо. Потому, что примеров работающих скриптов в сети полно.
Код: Выделить всё
Curl.Init()
Curl.SetSSLVersion(CURL_SSLVERSION_DEFAULT)
Curl.SetSSLVerifyHost(false)
Curl.SetSSLVerifyPeer(false)
Curl.SetOpt(CURLOPT_USERAGENT,'MY_EMAIL') ! < ---- ВОТ ЭТО НЕ ВИЖУ В DEBUGVIEW
Curl.SetOpt(CURLSSH_AUTH_AGENT,'MY_EMAIL') ! < ---- ВОТ ЭТО НЕ ВИЖУ В DEBUGVIEW
Loc:xRes = curl.SendRequest( ...
Для строк в SetOpt надо передавать переменную, а не константу:
Код: Выделить всё
szUserAgent CSTRING('curl/7.52.1')
CODE
SELF.SetOpt(CURLOPT_USERAGENT, szUserAgent)
Спасибо ! Пошла вода в хату …
Код: Выделить всё
$ch = curl_init( $url );
curl_setopt( $ch, CURLOPT_USERAGENT, "My User Agent" );