我正在使用groovyx.net.http.HTTPBuilder从Grails发布到PHP脚本。我需要附上几个文本字段和一些文件。
我可以通过这种方式附加一些文本字段并获得巨大成功:
MultipartEntity mpc = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE)
mpc.addPart("json", new StringBody(json.toString()))
但是,当我附加这样的文件时,请求中不再出现文本字段:
passFiles.each() { key, value ->
mpc.addPart(key, new InputStreamBody(value.stream, value.type, value.filename))
System.out << value
}
我认为文件应该可以添加这种方式。以下是我对以上内容的描述:
[filename:icon.png, stream:java.io.ByteArrayInputStream@2747ebcb, type:image/png]
如何让HTTPBuilder按预期进行多部分POST?
答案 0 :(得分:1)
一些想法:
setEntity()
将您的请求与MultipartEntity
?答案 1 :(得分:0)
安德鲁的评论让我更好地了解了HTTPClient Java API。我能够像上面那样使一切工作:
将流的临时副本保存到文件中。
def file = new File('web-app/tmpfiles/file.dat').newOutputStream()
file << stream
file.close()
不使用InputStreamBody,而是使用FileBody和保存文件的路径。
mpc.addPart(key, new FileBody(new File('web-app/tmpfiles/file.dat'), filename, type, 'UTF-8'))