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}" ) } 希望这可以帮助 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |