curl POST для RESTful услуг - PullRequest
2 голосов
/ 18 марта 2010

На Stackoverflow есть много вопросов по поводу curl, но я не мог понять, что я делаю, чего не должен. Я пытаюсь вызвать службу RESTful, написанную мной с использованием API-интерфейса Jersey, и пытаюсь отправить ей XML-строку, и я получаю ошибку HTTP 415, которая должна быть ошибкой типа носителя.

Вот в моем скрипте оболочки вызов 1-го сервиса:

а = curl http://gf...:8080/InChItoD/inchi/3dstructure?InChIstring=$inchi

echo $ abc (это прекрасно работает, вывод, который он возвращает, приведен ниже.)

Отправка этой строки XML во второй сервис

def = curl -d $abc -H "Content-Type:text/xml" http://gf...:8080/XML2G/xml3d/gssinput

Я получаю следующую ошибку:

... ... HTTP Status 415 Описание сообщения отчета о состоянии. Сервер отклонил этот запрос, поскольку объект запроса находится в формате, не поддерживаемом запрошенным ресурсом для запрошенного метода (). Apache Tomcat / 6.0.26

Это пример строки xml, которую я пытаюсь отправить

<?xml version="1.0"?><molecule xmlns="http://www.xml-cml.org/schema"> <atomArray> <atom id="a1" elementType="N" formalCharge="1" x3="0.997963" y3="-0.002882" z3="-0.004222"/> <atom id="a2" elementType="H" x3="2.024650" y3="-0.002674" z3="0.004172"/> <atom id="a3" elementType="H" x3="0.655444" y3="0.964985" z3="0.004172"/> <atom id="a4" elementType="H" x3="0.649003" y3="-0.496650" z3="0.825505"/> <atom id="a5" elementType="H" x3="0.662767" y3="-0.477173" z3="-0.850949"/> </atomArray> <bondArray> <bond atomRefs2="a1 a2" order="1"/> <bond atomRefs2="a1 a3" order="1"/> <bond atomRefs2="a1 a4" order="1"/> <bond atomRefs2="a1 a5" order="1"/> </bondArray></molecule>

Заранее спасибо

1 Ответ

2 голосов
/ 18 марта 2010

сначала вы можете попробовать процитировать вашу строку $abc. например, curl -d "$abc". Если это не помогает, попробуйте избежать этих метасимволов, таких как двойные кавычки и косая черта. например,

abc=$(echo "$abc" | sed 's|\(["/]\)|\\&|g' )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...