将POST发送到RESTful服务

时间:2010-03-18 04:12:10

标签: post curl shell rest jersey

Stackoverflow上有很多关于卷曲的问题,但是我无法弄清楚我在做什么,我不应该做什么。 我试图调用我使用Jersey API编写的RESTful服务,并尝试将xml字符串POST到它,我得到HTTP 415错误,这应该是媒体类型错误。

在我的shell脚本中调用1st服务:

ABC = 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状态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 个答案:

答案 0 :(得分:2)

首先,您可以尝试引用$abc字符串。例如curl -d "$abc"。如果这没有帮助,请尝试转义那些元字符,如双引号和正斜杠。例如

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