![](/img/trans.png)
[英]How can I set a CoAP post request Body with a requestparameter and a File?
[英]How i can send file in body of the post request? groovy
我有一个文件作为字节数组。 我想在发布请求的正文中发送它。
我在 JavaScript 中有一个很好的例子。 不能在 groovy 中重复相同的代码。 服务器返回“初始服务器错误”。 我确定问题出在传递的数据类型上。
Groovy 代码:
def reqParams = [:];
reqParams.filename = 'test.pdf'
reqParams.filedata = utils.readFileContent(obj.clientFile) // array of byte
reqParams.destination = 'test'
def jsonBody = new JsonBuilder(reqParams).toString()
// build HTTP POST
def client = new RESTClient(baseUrl)
client.auth.basic 'user1', 'user1'
def resp = client.post(body : jsonBody, contentType: JSON)
使用帮助 JS 生成请求的示例正文:
Content-Type: multipart/form-data; boundary=--------------------------295349461296500421390407
Content-Length: 659
----------------------------295349461296500421390407
Content-Disposition: form-data; name="filedata"; filename="query.txt"
<query.txt>
----------------------------295349461296500421390407
Content-Disposition: form-data; name="destination"
workspace://SpacesStore/716afb88-715a-4413-85bc-f71630abfd51
----------------------------295349461296500421390407
Content-Disposition: form-data; name="filename"
jasperTextToNextStrin.txt
----------------------------295349461296500421390407--
如何使用 Groovy 发送 POST 请求?
JSON 格式本身不支持二进制数据。 要在 JSON 有效负载中发送二进制数据,您需要以某种方式将其编码为文本。
您应该使用什么编码取决于服务器的期望。
常见的编码是base 64 编码:
reqParams.filedata = myFile.bytes.encodeBase64().toString()
或者
reqParams.filedata = utils.readFileContent(obj.clientFile).encodeBase64().toString()
如果readFileContent
确实返回一个byte[]
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.