团队冲刺第十天
今天做的主要是整合下团队的项目,得到暂时性的成果,发现了很多不足,后续还会改进
import android.util.Log;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
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.util.Map;
public class HTTPUtil {
private static final String TAG
="HttpUtil" ;
public static ByteArrayOutputStream
sendPost(String requrl, String reqdata){
//post请求获取二进制流
HttpURLConnection
connection=null;
try {
requrl=requrl+"?"+reqdata;
System.out.println(requrl+"yyyyyy");
URL url=new URL(requrl);
connection=(HttpURLConnection)url.openConnection();
connection.setRequestMethod("POST");
connection.setUseCaches(false);
connection.setConnectTimeout(8000);
connection.setReadTimeout(8000);
// 3. 指定content-type -实际上就是指定传输的数据类型
connection.setRequestProperty("Content-Type",
"application/x-www-form-urlencoded");
connection.setRequestProperty("Charset", "utf-8");
// 发送POST请求必须设置如下两行
connection.setDoInput(true);
connection.setDoOutput(true);
// 获取URLConnection对象对应的输出流
System.out.println(reqdata+"yyyyyy");
//OutputStream
outputStream = connection.getOutputStream();
//DataOutputStream out = new
DataOutputStream(connection.getOutputStream());
//outputStream.write(reqdata.getBytes("utf-8"));
//PrintWriter out = new
PrintWriter(new
OutputStreamWriter(connection.getOutputStream(),"utf-8"));
//out.write(reqdata.getBytes());
// flush输出流的缓冲
//outputStream.flush();
//outputStream.close();
//out.flush();
//out.close();
connection.connect();//
建立实际的连接
int respcode=connection.getResponseCode();
if(respcode==200){
InputStream
in=connection.getInputStream();
byte []buff=new
byte[1024];
int len=0;
ByteArrayOutputStream rs=new
ByteArrayOutputStream();
while ((len=in.read(buff))!=-1){
rs.write(buff,0,len);
}
in.close();
rs.close();
connection.disconnect();
Log.d(TAG,"请求成功,状态码:"+respcode);
return rs;
}else{
Log.d(TAG,"请求错误,状态码:"+respcode);
}
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
public static String
sendPostImg(String actionUrl, Map<String, File> files) throws IOException
{
String BOUNDARY = java.util.UUID.randomUUID().toString(); //利用系统工具类生成界限符
String PREFIX = "--",
LINEND = "\r\n";
String MULTIPART_FROM_DATA = "multipart/form-data";
String CHARSET = "UTF-8";
URL uri = new URL(actionUrl);
HttpURLConnection conn =
(HttpURLConnection) uri.openConnection();
conn.setReadTimeout(5 * 1000); //
缓存的最长时间
conn.setDoInput(true);//
允许输入
conn.setDoOutput(true);//
允许输出
conn.setUseCaches(false);
// 不允许使用缓存
conn.setRequestMethod("POST");
conn.setRequestProperty("connection",
"keep-alive");
conn.setRequestProperty("Charsert",
"UTF-8");
conn.setRequestProperty("Content-Type",
MULTIPART_FROM_DATA + ";boundary=" + BOUNDARY);
DataOutputStream outStream = new
DataOutputStream(conn.getOutputStream());
InputStream in = null;
// 发送文件数据
if (files != null)
{
for (Map.Entry<String,
File> file : files.entrySet())
{
StringBuilder sb1 = new
StringBuilder();
sb1.append(PREFIX);
sb1.append(BOUNDARY);
sb1.append(LINEND);
// name是post中传参的键 filename是文件的名称
sb1.append("Content-Disposition:
form-data; name=\"file\"; filename=\"").append(file.getValue().getName()).append("\"").append(LINEND);
sb1.append("Content-Type:
application/octet-stream; charset=").append(CHARSET).append(LINEND);
sb1.append("Content-Transfer-Encoding:
binary").append(LINEND);
sb1.append(LINEND);
outStream.write(sb1.toString().getBytes());
InputStream is = new FileInputStream(file.getValue());
byte[] buffer = new
byte[1024];
int len = 0;
while ((len =
is.read(buffer)) != -1)
{
outStream.write(buffer, 0, len);
}
is.close();
outStream.write(LINEND.getBytes());
}
// 请求结束标志
byte[] end_data =
(PREFIX + BOUNDARY + PREFIX + LINEND).getBytes();
outStream.write(end_data);
outStream.flush();
// 得到响应码
int res =
conn.getResponseCode();
if (res == 200)
{
Log.d(TAG,"状态码:"+res);
in =
conn.getInputStream();
ByteArrayOutputStream
bos=new ByteArrayOutputStream();
int l=-1;
byte[]buff=new
byte[1024];
while ((l=in.read(buff))!=-1)
bos.write(buff,0,l);
bos.close();
in.close();
outStream.close();
conn.disconnect();
return new String(bos.toByteArray());
}else{
Log.d(TAG,"状态码:"+res);
outStream.close();
conn.disconnect();
}
}
return "";
}
}