2010-03-18 2 views
2

Есть много вопросов о Stackoverflow о завитке, но я не мог понять, что я делаю, чего я не должен. Я пытаюсь вызвать службу RESTful, которую я написал с использованием API Джерси, и пытаюсь выполнить POST строку xml, и я получаю ошибку HTTP 415, которая должна быть ошибкой типа Media.curl POST to RESTful services

Вот в моей оболочке вызова сценария к 1-й службе:

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

эхо $ ABC (это отлично работает вывод, что она возвращает приводится ниже.)

Проводки Этого XML-строка для второй службы

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

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

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

Это образец XML-строки Я пытаюсь POST

<?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>

Спасибо заранее

ответ

2

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

abc=$(echo "$abc" | sed 's|\(["/]\)|\\&|g') 
+0

Экранирование этих метасимволов не разрешило его. Положив $ abc в двойные кавычки, я больше не вижу ошибку HTTP 415, но я не вижу, что она отправляется на мою службу. –

+0

Спасибо! В моей службе произошла ошибка, а не в заявлении на скручивание. Я имею в виду, что мне пришлось исправить эту ошибку в моей службе и использовать двойные кавычки в curl. Еще раз спасибо. –