50,532
社区成员
发帖
与我相关
我的任务
分享
import sun.net.www.protocol.http.HttpURLConnection;
import java.io.*;
import java.net.URL;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.io.IOUtils;
import java.lang.*;
//PUT请求
public int doPutFile(File file,String contentType,String url,String content,String geoUser,String geoPassword ) throws Exception{
int code=0;
String geoCreds = geoUser + ":" +geoPassword; //用户信息
String encodeAuth = new String(Base64.encodeBase64(geoCreds.getBytes())); //base64数据编码用户名及密码
HttpURLConnection con = (HttpURLConnection) new URL(url).openConnection(); //创建httpurlConnection的连接
con.setRequestMethod("PUT"); //请求方法为PUT
con.setRequestProperty("Authorization", "Basic" + encodeAuth); //设置请求属性:添加Authorition验证用户名密码
con.setRequestProperty("User-Agent","Mozilla/5.0"); //设置浏览器类型
con.setRequestProperty("Content-type",contentType ); //数据类型
con.setConnectTimeout(120000);
con.setDoOutput(true);
OutputStream outputStream =con.getOutputStream(); //接收输出流
FileInputStream streamFileInputStream = new FileInputStream(file); //文件输入流
BufferedInputStream streamFileBufferedInputStream = new BufferedInputStream(streamFileInputStream); //缓冲文件输入流 提高文件输入的速度
//设置缓冲 缓冲大小512字节
byte[] streamFileBytes = new byte[512];
int bytesRead = 0;
while ((bytesRead = streamFileBufferedInputStream.read(streamFileBytes)) > 0) {
outputStream.write(streamFileBytes, 0, bytesRead);
}
outputStream.flush(); //清空输出流
code= con.getResponseCode();
try{
InputStream inputStream = con.getInputStream(); //得到输入流
StringWriter writer = new StringWriter();
IOUtils.copy(inputStream,writer,"UTF-8"); //将数据从输入流复制到输出流writer
String theString = writer.toString();
inputStream.close();
System.out.println( theString );
}catch (Exception e){
e.printStackTrace(); //追踪输出至标准错误流
}
con.disconnect(); //httpURLConnection关闭
streamFileBufferedInputStream.close(); //缓冲关闭
return code;
}