HttpURLConnection 返回的结果显示request的语法错误 IP及端口缺失
java程序在linux服务器中运行,返回的结果为
<head>
<title>Error response</title>
</head>
<body>
<h1>Error response</h1>
<p>Error code 400.
<p>Message: Bad request syntax ('PUT /api/v1.0/task/ file@/data/192.168.1.1/003/weixin/111-746736751-371100-371100-1534545961-02853.zip HTTP/1.1').
<p>Error code explanation: 400 = Bad request syntax or unsupported method.
</body>
以下是我的程序 只是向目标服务器发送完整请求 如PUT http://192.168.1.1:9733/...
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
public class SXTest {
public static String sendPut(String url,String param){
PrintWriter out=null;
BufferedReader in=null;
String result ="";
try {
URL realUrl = new URL(url);
// 打开和 HttpURL 之间的连接
HttpURLConnection conn = (HttpURLConnection) realUrl.openConnection();
// 设置通用的请求属性
conn.setRequestProperty("accept", "*/*");
conn.setRequestProperty("connection", "Keep-Alive");
conn.setRequestMethod("PUT");
// 发送 POST 请求必须设置如下两行
conn.setDoOutput(true);
conn.setDoInput(true);
// 获取 HttpURLConnection 对象对应的输出流
out = new PrintWriter(conn.getOutputStream());
// 发送请求参数
out.print(param);
//flush 输出流的缓冲
out.flush();
InputStream input = conn.getInputStream();
int count = input.available();
byte[] b = new byte[count];
int readCount = 0;// 已经成功读取的字节的个数
while(readCount < count){
readCount += input.read(b,readCount,count-readCount);
}
result = new String(b, 0, count, "UTF-8");
}catch (Exception e){
System.out.println("发送PUT请求出现异常 " + e);
e.printStackTrace();
}
//使用finally块来关闭输出流、输入路
finally {
try{
if(out!=null){
out.close();
} if(in!=null){
in.close();
}
} catch(IOException ex){
ex.printStackTrace(); }
}
return result;
}
/*public static List<File> getFiles(String rootDir){
File rootFile = new File(rootDir);
File[] dirs = rootFile.listFiles();
List<File> files = new ArrayList<File>();
for (File dir: dirs) {
if(dir.length() > 0){
for (File file:dir.listFiles()) {
files.add(file);
}
}
}
return files;
}*/
public static List<File> getFiles(String rootDir){
List<File> list = new ArrayList<File>();
File rootFile = new File(rootDir);
if(rootFile.isFile() || !rootFile.exists()){
return list;
}
File[] files = rootFile.listFiles();
for (File file: files) {
if(file.isDirectory()){
list.addAll(getFiles(file.getAbsolutePath()));
}else{
list.add(file);
}
}
return list;
}
public static void main(String[] args){
String rootDir = "/data/192.168.1.1/003";
while(true){
List<File> files = getFiles(rootDir);
if(files.size() > 0){
String result = null;
String path = null;
for (File file: files) {
path = file.getAbsolutePath();
String url = "http://192.168.1.1/api/v1.0/task/ file@";
result = sendPut(url + path, null);
if(result != null){
System.out.println(path + "添加成功!");
if(file.delete()){
System.out.println(path + "删除成功!");
}
}
}
}
/*try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}*/
}
/*List<String> paths = new ArrayList<String>();
for (File file: files) {
paths.add(file.getAbsolutePath());
}
String result = null;
for (String path: paths) {
String url = "http://{{沙箱设备IP}}:9377/api/v1.0/task/ file@~/Desktop/ test.exe";
result = sendPut(url, null);
if(result != null){
}
}*/
}
}