Android DefaultHttpClient 上传文件
2016-06-06 15:29
471 查看
需要依赖httpmime.jar
public class HttpText {
public static void UseVolleyForHttps(Context context) {
try {
String path = "http://192.168.0.102:8080/myweb/der";
BasicHttpParams params = new BasicHttpParams();
HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
HttpProtocolParams.setContentCharset(params,
HTTP.DEFAULT_CONTENT_CHARSET);
HttpProtocolParams.setUseExpectContinue(params, true);
SSLSocketFactory.getSocketFactory().setHostnameVerifier(
new AllowAllHostnameVerifier());
SchemeRegistry schReg = new SchemeRegistry();
schReg.register(new Scheme("http", PlainSocketFactory
.getSocketFactory(), 80));
// 出错:因为使用了不被系统承认的自定义证书:No peer certificate 。
// schReg.register(new
// Scheme("https",SSLSocketFactory.getSocketFactory(), 443));
schReg.register(new Scheme("https", SSLTrustAllSocketFactory
.getSocketFactory(), 443));
ClientConnectionManager connMgr = new ThreadSafeClientConnManager(
params, schReg);
DefaultHttpClient client = new DefaultHttpClient(connMgr, params);
org.apache.http.entity.mime.MultipartEntity s = new org.apache.http.entity.mime.MultipartEntity(
HttpMultipartMode.BROWSER_COMPATIBLE);
// 测试文件
File file = new File(context.getCacheDir(), "jt.txt");
if (!file.exists()) {
file.createNewFile();
}
FileWriter w = new FileWriter(file);
w.write("橘子面包");
w.flush();
s.addPart(new FormBodyPart("title", new StringBody("juntao")));
s.addPart("file", new FileBody(file, "text/plain"));
HttpPost post = new HttpPost(path);
post.setEntity(s);
HttpResponse httpResponse = client.execute(post);
int responseCode = httpResponse.getStatusLine().getStatusCode();
String message = httpResponse.getStatusLine().getReasonPhrase();
HttpEntity entity = httpResponse.getEntity();
if(responseCode==200){
Log.e("成功", "succee");
}
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
服务器端:
/**
* Servlet implementation class NesServlet
*/
@WebServlet("/der")
public class FormServlet extends HttpServlet {
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
System.out.print("上传中\n");
System.out.print("查看参数\n------------------------\n");
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
if (isMultipart) {
try {
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setHeaderEncoding("UTF-8");
List<FileItem> items = upload.parseRequest(request);
// String dir = request.getSession().getServletContext()
// .getRealPath("/files");
File dirFile = new File("E:/uploder");
if (!dirFile.exists()) {
dirFile.mkdirs();
}
for (FileItem item : items) {
if (item.isFormField()) {
String name = item.getFieldName();
String values = item.getString("UTF-8");
System.out.print("属性="+ name+"\n");
System.out.print("值="+values+"\n");
} else {
System.out.print("有文件");
File saveFile = new File("E:/uploder", item.getName());
item.write(saveFile);
}
}
} catch (FileUploadException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} else {
doGet(request, response);
}
}
}
public class HttpText {
public static void UseVolleyForHttps(Context context) {
try {
String path = "http://192.168.0.102:8080/myweb/der";
BasicHttpParams params = new BasicHttpParams();
HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
HttpProtocolParams.setContentCharset(params,
HTTP.DEFAULT_CONTENT_CHARSET);
HttpProtocolParams.setUseExpectContinue(params, true);
SSLSocketFactory.getSocketFactory().setHostnameVerifier(
new AllowAllHostnameVerifier());
SchemeRegistry schReg = new SchemeRegistry();
schReg.register(new Scheme("http", PlainSocketFactory
.getSocketFactory(), 80));
// 出错:因为使用了不被系统承认的自定义证书:No peer certificate 。
// schReg.register(new
// Scheme("https",SSLSocketFactory.getSocketFactory(), 443));
schReg.register(new Scheme("https", SSLTrustAllSocketFactory
.getSocketFactory(), 443));
ClientConnectionManager connMgr = new ThreadSafeClientConnManager(
params, schReg);
DefaultHttpClient client = new DefaultHttpClient(connMgr, params);
org.apache.http.entity.mime.MultipartEntity s = new org.apache.http.entity.mime.MultipartEntity(
HttpMultipartMode.BROWSER_COMPATIBLE);
// 测试文件
File file = new File(context.getCacheDir(), "jt.txt");
if (!file.exists()) {
file.createNewFile();
}
FileWriter w = new FileWriter(file);
w.write("橘子面包");
w.flush();
s.addPart(new FormBodyPart("title", new StringBody("juntao")));
s.addPart("file", new FileBody(file, "text/plain"));
HttpPost post = new HttpPost(path);
post.setEntity(s);
HttpResponse httpResponse = client.execute(post);
int responseCode = httpResponse.getStatusLine().getStatusCode();
String message = httpResponse.getStatusLine().getReasonPhrase();
HttpEntity entity = httpResponse.getEntity();
if(responseCode==200){
Log.e("成功", "succee");
}
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
服务器端:
/**
* Servlet implementation class NesServlet
*/
@WebServlet("/der")
public class FormServlet extends HttpServlet {
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
System.out.print("上传中\n");
System.out.print("查看参数\n------------------------\n");
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
if (isMultipart) {
try {
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setHeaderEncoding("UTF-8");
List<FileItem> items = upload.parseRequest(request);
// String dir = request.getSession().getServletContext()
// .getRealPath("/files");
File dirFile = new File("E:/uploder");
if (!dirFile.exists()) {
dirFile.mkdirs();
}
for (FileItem item : items) {
if (item.isFormField()) {
String name = item.getFieldName();
String values = item.getString("UTF-8");
System.out.print("属性="+ name+"\n");
System.out.print("值="+values+"\n");
} else {
System.out.print("有文件");
File saveFile = new File("E:/uploder", item.getName());
item.write(saveFile);
}
}
} catch (FileUploadException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} else {
doGet(request, response);
}
}
}
相关文章推荐
- jboss5可以使用http://localhost/和http://127.0.0.1/ 不可以ip访问
- swift--用 Swift 编写面向协议的网络请求
- 网络带宽
- https http请求 demo
- Tcp为什么要三次握手四次挥手
- React Native第一个Demo(2)网络获取数据和ListView
- SVN使用MySQL验证用户名密码(HTTP)
- http 返回的状态值以及Tomcat webapp的管理
- 类似restful风格的网络请求框架
- LINUX 中的 TCP/IP协议 参数详解
- TCP洪水攻击(SYN Flood)的诊断和处理
- iOS模拟网络差
- Ghost windows7系统的连接网络的情况下网络连接图标为什么显示无网络访问
- HTTPS攻击
- delphi IdHTTP实现Get方法下载文件,断点续传
- 通过HttpListener实现简单的Http服务
- bzoj 1596: [Usaco2008 Jan]电话网络
- 如何让你的Apache支持https
- Java 基于Tcp/ip连接的多人交互聊天室(Socket编程)
- apache https ssl配置详细步骤讲解