我是Java的新手,可以通过Java中的获取和发布请求来学习自己的方式,有人可以看看我的代码,并帮助我了解为什么当我尝试将文件上传到网站url时它不起作用通过发帖吗?
其他信息: 可以通过curl -T filename.extension url
将文件上传到上述网址这是代码
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
public class Main {
public static void main(String[] args) {
System.out.println("Init Binary");
URLConnection urlconnection = null;
try {
File file = new File(args[0]);
URL url = new URL("https://transfer.sh/");
urlconnection = url.openConnection();
urlconnection.setDoOutput(true);
urlconnection.setDoInput(true);
if (urlconnection instanceof HttpURLConnection) {
((HttpURLConnection) urlconnection).setRequestMethod("PUT");
((HttpURLConnection) urlconnection).setRequestProperty("Content-type", "text/plain");
((HttpURLConnection) urlconnection).connect();
}
BufferedOutputStream bos = new BufferedOutputStream(urlconnection.getOutputStream());
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
int i;
// read byte by byte until end of stream
while ((i = bis.read()) > 0) {
bos.write(i);
}
bis.close();
bos.close();
System.out.println(((HttpURLConnection) urlconnection).getResponseMessage());
} catch (Exception e) {
e.printStackTrace();
}
try {
InputStream inputStream;
int responseCode = ((HttpURLConnection) urlconnection).getResponseCode();
if ((responseCode >= 200) && (responseCode <= 202)) {
inputStream = ((HttpURLConnection) urlconnection).getInputStream();
int j;
while ((j = inputStream.read()) > 0) {
System.out.println(j);
}
} else {
inputStream = ((HttpURLConnection) urlconnection).getErrorStream();
}
((HttpURLConnection) urlconnection).disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
}
预期的输出应该是上传的文件url,作为响应接收。