Android(安卓)Http网络数据传输备忘
16lz
2021-12-04
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
public class HttpTool {
private static int TIME_OUT = 1000 * 6 ;
private static String POST = " POST " ;
private static String GET = " GET " ;
private static String UTF8 = " UTF-8 " ;
public static void downloadGET(String path) throws Exception{
URL url = new URL(path);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setReadTimeout(TIME_OUT);
connection.setRequestMethod(GET);
connection.setUseCaches( false );
connection.connect();
if (connection.getResponseCode() != 200 ){
throw new RuntimeException( " ResponseCode != 200 " );
}
InputStream inputStream = connection.getInputStream();
File file = new File(rename(path));
FileOutputStream fileOutputStream = new FileOutputStream(file);
readinput(inputStream, fileOutputStream);
connection.disconnect();
System.out.println( " ok " );
}
public static void downloadPOST(String path,Map < String, String > params) throws Exception{
URL url = new URL(path);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setReadTimeout(TIME_OUT);
connection.setRequestMethod(POST);
connection.setUseCaches( false );
connection.setDoInput( true );
connection.setDoOutput( true );
connection.setRequestProperty( " Accept-Charset " , UTF8);
connection.setRequestProperty( " Connection " , " keep-alive " );
connection.setRequestProperty( " Content-Type " , " application/x-www-form-urlencoded; charset= " + UTF8);
StringBuilder sb = new StringBuilder();
if (params != null ){
for (Map.Entry < String, String > item : params.entrySet()){
sb.append(item.getKey() + " = " + item.getValue()).append( " & " );
}
sb = sb.deleteCharAt(sb.length() - 1 );
byte [] data = sb.toString().getBytes();
connection.setRequestProperty( " Content-Length " ,String.valueOf(data.length));
OutputStream outputStream = connection.getOutputStream();
outputStream.write(data);
outputStream.flush();
outputStream.close();
}
if (connection.getResponseCode() != 200 ){
throw new RuntimeException( " ResponseCode != 200 " );
}
InputStream inputStream = connection.getInputStream();
BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);
byte [] buffer = new byte [ 1024 ];
int len = - 1 ;
ByteArrayOutputStream arrayOutputStream = new ByteArrayOutputStream();
while ((len = bufferedInputStream.read(buffer)) != - 1 ){
arrayOutputStream.write(buffer, 0 , len);
}
byte [] bytes = arrayOutputStream.toByteArray();
String str = new String(bytes,UTF8);
arrayOutputStream.close();
bufferedInputStream.close();
connection.disconnect();
System.out.println(str);
}
/**
* 读取输入流
* @param inputStream
* @param fileOutputStream
* @throws Exception
*/
private static void readinput(InputStream inputStream,FileOutputStream fileOutputStream) throws Exception{
BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(fileOutputStream);
byte [] buffer = new byte [ 1024 ];
int len = - 1 ;
while ((len = bufferedInputStream.read(buffer)) != - 1 ){
bufferedOutputStream.write(buffer, 0 , len);
}
bufferedOutputStream.close();
bufferedInputStream.close();
}
/**
* 重名名
* @param path
* @return
*/
public static String rename(String path){
String str = path.substring(path.lastIndexOf( " . " ));
return new SimpleDateFormat( " yyyyMMddHHmmssS " ).format( new Date()) + str;
}
更多相关文章
- Android常用权限
- Android关闭输入法
- android 读写文件
- Android(安卓)uses-permission 总结
- Android(安卓)限制EditText输入小数点后面位数
- android中限制EditText中输入指定字符
- android 读取sd卡中的图片
- 如何消除原生Android原生网络连接显示x或者惊叹号
- android EditText和输入法相关知识总结