小编vic*_*fan的帖子

Java 9 HttpClient发送multipart/form-data请求

以下是表格:

<form action="/example/html5/demo_form.asp" method="post" 
enctype=”multipart/form-data”>
   <input type="file" name="img" />
   <input type="text" name=username" value="foo"/>
   <input type="submit" />
</form>
Run Code Online (Sandbox Code Playgroud)

何时提交此表单,请求将如下所示:

POST /example/html5/demo_form.asp HTTP/1.1
Host: 10.143.47.59:9093
Connection: keep-alive
Content-Length: 326
Accept: application/json, text/javascript, */*; q=0.01
Origin: http://10.143.47.59:9093
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryEDKBhMZFowP9Leno
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.8,zh-CN;q=0.6,zh;q=0.4

Request Payload
------WebKitFormBoundaryEDKBhMZFowP9Leno
Content-Disposition: form-data; name="username"

foo
------WebKitFormBoundaryEDKBhMZFowP9Leno
Content-Disposition: form-data; name="img"; filename="out.txt"
Content-Type: text/plain


------WebKitFormBoundaryEDKBhMZFowP9Leno--
Run Code Online (Sandbox Code Playgroud)

请注意"请求有效负载",你可以在表单中看到两个参数,用户名和img(form-data; name ="img"; filename ="out.txt"),并且名字是文件系统中的实际文件名(或路径),您将在后端按名称(而不是文件名)接收文件(例如spring controller).
如果我们使用Apache Httpclient来模拟请求,我们将编写这样的代码:

MultipartEntity …
Run Code Online (Sandbox Code Playgroud)

java http multipartform-data http2 java-9

9
推荐指数
3
解决办法
5078
查看次数

标签 统计

http ×1

http2 ×1

java ×1

java-9 ×1

multipartform-data ×1