亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

通過java套接字使用HTTP協議上傳文件

通過java套接字使用HTTP協議上傳文件

元芳怎么了 2021-10-28 09:16:49
我試圖了解 HTTP 協議的工作原理,因此我嘗試手動將標頭添加到 java Socket 以向 httpbin.org 發送請求,如下所示:        BufferedWriter wr = new BufferedWriter(/*socket Outputstream*/)             wr.write("POST post HTTP/1.1\r\n");        wr.write("Host: httpbin.org\r\n");        wr.write("Accept: */*\r\n");        wr.write("Content-Length: "+data.length()+"\r\n");        wr.write("Content-Type: multipart/form-data; boundary=---WebKitFormBoundary67\r\n");        wr.write("\r\n");         wr.write(data);         wr.flush();在上面的代碼中data是 HTTP 請求的有效負載,如下所示:   ---WebKitFormBoundary67   Content-Disposition: form-data; name="field1"   value1   ---WebKitFormBoundary67   Content-Disposition: form-data; name="field2"; filename="example.txt"   Java is better when it run long   ---WebKitFormBoundary67--但是服務器 httpbin.org 沒有識別任何附加的文件,我錯過了什么嗎?
查看完整描述

1 回答

?
慕田峪4524236

TA貢獻1875條經驗 獲得超5個贊

multipart/form-data是RFC 2046 中定義的多部分 MIME 消息。消息示例中多部分 MIME 消息的基本結構multipart/form-data如下所示:


Content-type:  multipart/form-data; boundary=foo


--foo

Content-Disposition: form-data; name=key1


abcde

--foo

Content-Disposition: form-data; name=key2; filename=foo.txt


01234

--foo--

如您所見,邊界foo在邊界屬性中定義,用作部件之間的分隔符,--foo用作最終邊界--foo--。


相反,您的代碼將邊界定義為 not asfoo但 as--foo然后嘗試仍僅用--foo作各部分之間的分隔符。要更正您的代碼,您需要將邊界設置為 only-WebKitFormBoundary67而不是---WebKitFormBoundary67,或者-----WebKitFormBoundary67用作分隔符而不是 only ---WebKitFormBoundary67。



查看完整回答
反對 回復 2021-10-28
  • 1 回答
  • 0 關注
  • 215 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號