加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Groovy中的HTTPBuilder和MultipartEntity / multipart表单数据

发布时间:2020-12-14 16:28:14 所属栏目:大数据 来源:网络整理
导读:尝试模拟需要将一些INPUT / TEXT字段与文件中的数据组合在一起的HTTP POST.看起来我可以有一个或另一个,但不是两个? 在下面的代码段中,paramsToPost = [name:’John’,年龄:22] @Grab(group='org.codehaus.groovy.modules.http-builder',module='http-bui
尝试模拟需要将一些INPUT / TEXT字段与文件中的数据组合在一起的HTTP POST.看起来我可以有一个或另一个,但不是两个?

在下面的代码段中,paramsToPost = [name:’John’,年龄:22]

@Grab(group='org.codehaus.groovy.modules.http-builder',module='http-builder',version='0.5.0')
Boolean doHttpPost(String url,Map paramsToPost,String fileContent) {
    HTTPBuilder http = new HTTPBuilder(url)
    def resp = http.request(Method.POST ) { req ->
        MultipartEntity mpe = new MultipartEntity()
        mpe.addPart "foo",new StringBody(fileContent)
        req.entity = mpe

        // body = paramsToPost // no such property
    }

    println "response: ${resp}"

    return true
}

有人有工作样品吗?

解决方法

刚刚让我的代码与旧的commons-httpclient-3.1.jar一起工作

(new HTTPBuilder(url)).request(Method.POST) { request ->
MultipartEntity mpe = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
mpe.addPart('fileInput',new StringBody(params.fileInput))
if (params.fileInput=='file')
    mpe.addPart('file1',new InputStreamBody(uploadedFile.inputStream,uploadedFile.contentType,uploadedFile.originalFilename))
else if (params.fileInput=='text')
    mpe.addPart('fileText',new StringBody(params.fileText))
mpe.addPart('tags1',new StringBody(params.tags1)) 
request.entity = mpe
request.getParams().setParameter("http.connection.timeout",HTTP_TIMEOUT)
request.getParams().setParameter("http.socket.timeout",HTTP_TIMEOUT)
response.success = { resp,reader ->
    render(text : "Successfully uploaded filenn${reader.text}")
}
response.failure = { resp ->
  render (status: 500,text: "HTTP Failure Accessing Upload Service ${resp.statusLine}" )
}

希望这可以帮助

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读