我正在尝试使用java将字符串上传到一个安静的webclient。客户端设置为使用文件路径接收多种数据。
除了创建文件以上传此字符串之外,还有其他方法吗?我可以创建一个byte []对象,还是需要创建一个临时文件来上传它?
示例:
String s = "<tag>test</tag>"
String uri = "http://someserver.com/entity"
HttpHeaders httpHeaders = new HttpHeaders()
httpHeaders.setContentType(MediaType.MULTIPART_FORM_DATA)
LinkedMultiValueMap<String, Object> formParams = new LinkedMultiValueMap<>()
formParams.add('1', s)
HttpEntity<LinkedMultiValueMap<String, Object>> requestEntity = new HttpEntity<LinkedMultiValueMap<String, Object>>(formParams, httpHeaders)
ResponseEntity<Void> result = keystoreRestTemplate.exchange(uri, HttpMethod.POST, requestEntity, Void.class)
我的响应实体因400错误而失败。这是一个有效的卷曲:
curl -X POST -H "Accept: application/json" -F "1=@/tmp/dummyFile.tmp" "http://someserver.com/entity"
答案 0 :(得分:0)
我不确定我是否正确理解你,但你可以发布一个查询字符串,几乎就像使用get一样。多种形式无关紧要。
def address = 'http://posttestserver.com/post.php'.toURL()
def connection = address.openConnection()
connection.setRequestMethod("POST")
connection.doOutput = true
def writer = new OutputStreamWriter(connection.outputStream)
writer.write('firstname=Test&lastname=Test2')
writer.flush()
writer.close()
connection.connect()
print connection.content.text