首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在HttpBuilder请求体中发送XML数据

如何在HttpBuilder请求体中发送XML数据
EN

Stack Overflow用户
提问于 2015-03-09 07:54:10
回答 3查看 5.2K关注 0票数 1

这里的数据是XML内容,如何在java或groovy中的HttpBuilder请求体中发送XML数据。

代码语言:javascript
复制
def http = new HTTPBuilder(baseUrl)

 http.request(Method.POST, ContentType.XML) 
{
  uri.path = path
  headers.'Accept' = 'application/xml'
  headers.'Authorization' = "Basic YWU1N2UwYmFiYjUwNGJkM2I5MzI3NzQ3ODkyMjE0Yjk"
  headers.'Content-Type' = 'application/xml; charset=utf-8'
  body:data
  response.success = { resp, reader ->
                print "================" + reader.text
            }
}

编辑当我尝试'body : XML内容‘时会出现这个异常

代码语言:javascript
复制
 Error groovyx.net.http.HttpResponseException: Unsupported Media Type
| Error     at groovyx.net.http.HTTPBuilder.defaultFailureHandler(HTTPBuilder.java:652)
| Error     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
| Error     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
| Error     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
| Error     at java.lang.reflect.Method.invoke(Method.java:601)
| Error     at org.springsource.loaded.ri.ReflectiveInterceptor.jlrMethodInvoke(ReflectiveInterceptor.java:1276)
| Error     at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
| Error     at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
| Error     at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1086)
| Error     at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1110)
| Error     at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:953)
| Error     at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1110)
| Error     at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:910)
| Error     at groovy.lang.Closure.call(Closure.java:411)
| Error     at groovyx.net.http.HTTPBuilder.doRequest(HTTPBuilder.java:508)
| Error     at groovyx.net.http.HTTPBuilder.doRequest(HTTPBuilder.java:441)
| Error     at groovyx.net.http.HTTPBuilder.request(HTTPBuilder.java:390)
| Error     at groovyx.net.http.HTTPBuilder$request.call(Unknown Source)
| Error     at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-03-13 07:44:54

代码语言:javascript
复制
    def http = new HTTPBuilder(baseUrl)

        // perform a POST request
        http.request(Method.POST) {
            uri.path = path
            ***requestContentType = ContentType.XML***
            headers.'Authorization' = "Basic YWU1N2UwYmFiYjUwNGJkM2I5MzI3NzQ3ODkyMjE0Yjk"
            headers.'Accept' = 'application/xml'
            headers.'Content-Type' = 'application/xml; charset=utf-8'

            body = query // here Query is the XML content 
            // response handler for a success response code
            response.success = { resp, reader ->
               //Handle response here
            }

            response.failure = { resp ->

                //Handle failure here
            }
        }
票数 1
EN

Stack Overflow用户

发布于 2015-03-09 08:01:10

ContentType应该更改为XML,并且没有发送body。尝试:

代码语言:javascript
复制
def http = new HTTPBuilder(baseUrl)

http.request(Method.POST, ContentType.XML) {
   uri.path = path
   headers.'Accept' = 'application/xml'
   headers.'Authorization' = "Basic YWU1N2UwYmFiYjUwNGJkM2I5MzI3NzQ3ODkyMjE0Yjk"
   body: //put xml body here
   //query:data not sure it this is needed, basically there are query params
   response.success = { resp, reader ->
      print "================" + reader.text
   }
}
票数 1
EN

Stack Overflow用户

发布于 2015-03-09 08:38:36

砂砾中,请尝试如下:

代码语言:javascript
复制
import grails.converters.*
…

render(contentType: "text/xml") { 
   text:yourData as XML
 }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28937309

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档