java.net.URLConnection在这里经常询问使用情况,Oracle教程对此非常简洁.
该教程基本上只显示了如何触发GET请求并读取响应.它没有解释如何使用它来执行POST请求,设置请求标头,读取响应标头,处理cookie,提交HTML表单,上传文件等.
那么,我如何使用java.net.URLConnection触发和处理"高级"HTTP请求?
我正在尝试使用Java HTTP POST请求将图像发送到网站.
我正在使用此处使用的基本代码将文件从Java客户端上传到HTTP服务器:
这是我的修改:
String urlToConnect = "http://localhost:9000/upload";
File fileToUpload = new File("C:\\Users\\joao\\Pictures\\bla.jpg");
String boundary = Long.toHexString(System.currentTimeMillis()); // Just generate some unique random value.
URLConnection connection = new URL(urlToConnect).openConnection();
connection.setDoOutput(true); // This sets request method to POST.
connection.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary);
PrintWriter writer = null;
try {
writer = new PrintWriter(new OutputStreamWriter(connection.getOutputStream()));
writer.println("--" + boundary);
writer.println("Content-Disposition: form-data; name=\"picture\"; filename=\"bla.jpg\"");
writer.println("Content-Type: image/jpeg");
writer.println();
BufferedReader reader = null;
try {
reader = new BufferedReader(new InputStreamReader(new FileInputStream(fileToUpload)));
for (String …Run Code Online (Sandbox Code Playgroud) 我正在尝试通过URLConnection上传文件,但我需要将其读/写为二进制文件而不进行任何编码更改.
所以我试图byte[]从a 读取数组FileInputStream,但现在我有一个问题.PrintWriter我用来输出到服务器的对象不允许我这样做writer.write(content)(其中content是类型byte[]).我怎样才能解决这个问题?或者是否有另一种方法可以快速将二进制数据从a复制FileInputStream到PrintWriter?
谢谢