如何使用method::http::geturl-methodput放置xml内容
当我尝试使用Fire Fox Open HttpRequest插件时,我能够成功地安装如何使用method::http::geturl-methodput放置xml内容,http,tcl,alm,Http,Tcl,Alm,当我尝试使用Fire Fox Open HttpRequest插件时,我能够成功地安装 PUT http://12.222.20.17:8080/qcbin/rest/domains/test/projects/runtest/runs/385762 Accept: application/xml Content-Type: application/xml <Entity Type="run"> <Fields> <Field Name
PUT http://12.222.20.17:8080/qcbin/rest/domains/test/projects/runtest/runs/385762
Accept: application/xml
Content-Type: application/xml
<Entity Type="run">
<Fields>
<Field Name="status">
<Value>Passed</Value>
</Field>
</Fields>
</Entity>
-- response --
200 OK
Server: Apache-Coyote/1.1
PUThttp://12.222.20.17:8080/qcbin/rest/domains/test/projects/runtest/runs/385762
接受:应用程序/xml
内容类型:application/xml
通过
--回应--
200行
服务器:ApacheCoote/1.1
但我试图用TCL PUT方法http包模拟相同的操作,我得到了错误的请求响应
set xml {<Entity Type="run"><Fields><Field Name="status"><Value>Passed</Value></Field></Fields></Entity>}
set Headers(Cookie) $cookie
set Headers(Accept) "application/xml"
set Headers(Content-Type) "application/xml"
set Headers(Content) $xml
set token [::http::geturl "http://12.222.20.17:8080/qcbin/rest/domains/test/projects/runtest/runs/385762" -method PUT -headers [array get Headers]]
set xml{Passed}
设置标题(Cookie)$Cookie
设置标题(接受)“应用程序/xml”
设置标题(内容类型)“应用程序/xml”
设置标题(内容)$xml
设置令牌[::http::geturl”http://12.222.20.17:8080/qcbin/rest/domains/test/projects/runtest/runs/385762“-method PUT-headers[array get headers]]
回应
% ::http::data $token
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><QCRestException><Id>qcco
re.general-error</Id><Title>Bad Request</Title><StackTrace>javax.ws.rs.WebApplic
ationException: com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prolog
at [row,col {unknown-source}]: [1,0]
at org.apache.wink.common.internal.providers.entity.xml.JAXBXmlProvider.
readFrom(JAXBXmlProvider.java:113)
at org.apache.wink.server.internal.registry.ServerInjectableFactory$Enti
tyParam.getValue(ServerInjectableFactory.java:190)
%::http::data$token
qcco
re.general-errorBad Requestjavax.ws.rs.WebApplic
ationException:com.ctc.wstx.exc.WstxEOFException:prolog和xD中的意外EOF;
在[row,col{unknown source}]:[1,0]
;
位于org.apache.wink.common.internal.providers.entity.xml.JAXBXmlProvider。
readFrom(JAXBXmlProvider.java:113)和#xD;
位于org.apache.wink.server.internal.registry.ServerInjectableFactory$Enti
getValue(ServerInjectableFactory.java:190)和#xD;
我不知道我在哪里失踪,请有人帮我解决这个问题
感谢通过PUT在您的请求中发送XML文档,假设您已将文档序列化为可通过
$theXML
获得的字符串,则只需执行以下操作:
# Type *might* need to be text/xml
http::geturl $theServiceURL -method PUT -type application/xml -query $theXML
当然,您必须确保您处理的令牌返回正确,以此类推。http
包的级别仍然很低。(例如,您可能必须使用http::config
来设置响应中的MIME类型,并且您需要自己处理会话的重定向和cookie。)
改为发送JSON?然后,类型变为
application/json
。轻松点