У меня проблемы с отправкой POST-запроса в XML с использованием bash-скрипта. Вызов функций API осуществляется путем передачи в файл "functions.php" с помощью метода переменной POST input_xml, содержащего специально сформированный XML.

curl  -X POST  -i  -F input_xml=@/app/server/input_xml http://XX.XX.X.X/api/functions.php

Это нормально, если отправлять запрос с помощью специальных утилит, таких как Postman. Но с curl, он дает ответ "Variable input_xml is empty", когда я жду правильного ответа.

Result

HTTP/1.1 100 Continue

HTTP/1.1 200 OK
Date: Fri, 03 May 2019 09:16:51 GMT
Server: Apache
X-Powered-By: PHP/5.4.16
Set-Cookie: PHPSESSID=2cmhd3a0mqf7u330rpbdi3lhd0; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Length: 114
Content-Type: text/html; charset=utf-8

<?xml version="1.0" encoding="utf-8"?><document><result value="2">Variable input_xml is empty.</result></document>
0
Abylay 3 Май 2019 в 12:21

3 ответа

Лучший ответ

Вопрос не актуален, спасибо за попытку помочь. решение:

curl --data-urlencode input_xml@/app/informatica/PMRootDir/prod/log_motiw/input_xml.xml -X POST http: //*****/api/file.php

0
Abylay 14 Май 2019 в 06:16

На странице руководства команды curl я вижу, что вы должны использовать @ для передачи файла на сервер как есть (для загрузки файла). Но если вы хотите передать только содержимое, вы должны использовать символ < вместо символа @

Попробуйте использовать символ < вместо символа @

0
Pavan 3 Май 2019 в 11:14

Возможно, вам не хватает параметра типа контента:

-H 'content-type: application/xml'

0
Sergejs Katušenoks 3 Май 2019 в 09:56