将字符串上载到restful客户端

时间:2017-01-12 22:05:23

标签: groovy

我正在尝试使用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"

1 个答案:

答案 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