android开发
发表时间:2020-10-19
发布人:葵宇科技
浏览次数:48
PS:因为某些原因开端进行android开辟进修,对于javaee便利就接触比较少了,之前还有学过三大年夜框架然则都还没记录,等什么时刻闲点再记吧,趁便还能复习下。这篇文┞仿主如果要记录怎么将数据经由过程post提交发送给办事端,以及接收办事端发送过来的数据。。。
可贵:若何将通俗数据以及文件数据发送出去
解决办法:
1.应用HttpPost 封装数据内容
2.应用MultipartEntity封装数据,再放入post请求中
3.应用HttpClient将post发送出去
代码:(此处只是演示代码,须要添加一些结实性的语句)
1.须要导入MultipartEntity相干的对象包[img]http://img.blog.csdn.net/20150106110249085?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMTc3MTY3NA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center
2.android客户端代码:
发送数据:(应用该办法同时可以实现传输图片或其他文件以及通俗字符串数据)
File dbFile = this.getDatabasePath("note.db");//1.获取数据库文件 HttpPost post = new HttpPost(SERVER_UP_URL);//2.指定post连接的url HttpClient client = new DefaultHttpClient();//3.创建发送请求的client对象 HttpResponse response;//4.用于获取响应对象 MultipartEntity entity = new MultipartEntity();//5.创建一个封装数据的实体(该代码默认将请求的类型定义为multipart/form-data) //该类型许可发送文件数据 try { FileBody body = new FileBody(dbFile);//将一个文件封装,便于将数据存入实体 entity.addPart("file", body); //6.为数据实体填充数据,经由过程类似键值对的方法填充 entity.addPart("name", new StringBody("halm")); //第一个参数为键(办事器request获取的参数名),第二个参数为值内容 //通俗字符串,文件用不合的类进行封装 post.setEntity(entity);//7.为post请求封装数据实体以及提交类型 response = client.execute(post);//8.发送post请求 int status = response.getStatusLine().getStatusCode();//9.获取办事峨锾螃状况率攀来断定是否交互成功 if(status != 200){ Toast.makeText(ListViewActivity.this, "连接掉败", Toast.LENGTH_SHORT).show(); return; } Toast.makeText(ListViewActivity.this, "连接成功", Toast.LENGTH_SHORT).show(); } catch (Exception e) { e.printStackTrace(); } }
吸法术据:
需求:1.将手机的数据库文件发送到办事端,办事端保存 2.将办事端保存的数据发送回击机棘手机将该文件覆盖已有的数据库文件File dbFile = this.getDatabasePath("note.db");//1.先获取本地数据库文件 if(dbFile.exists()){ dbFile.delete();//2.断定是否存在,如不雅存在则删除(便于覆盖) } try { dbFile.createNewFile();//3.到此处都不存在该文件,所以就须要创建该数据库文件 OutputStream out = new FileOutputStream(dbFile);//4.设置一个写的流,用于将数据写到文件内 URL url = new URL(SERVER_DOWN_URL);//5.应用URL连接网站 URLConnection conn = url.openConnection();//6.拿到该URL的连接 InputStream in = conn.getInputStream();//7.经由过程连接获取攫取流,用于获取接收到的数据 byte buff[] = new byte[1024]; int len; while((len=in.read(buff))>0){ out.write(buff, 0, len);//8.将接收到的数据写到数据库文件中 } in.close(); out.close(); } catch (IOException e) { e.printStackTrace(); }
3.办事端代码
吸法术据并保存try { //断定提交的方法 if(!ServletFileUpload.isMultipartContent(request)){ System.out.println("缺点提交"); return; } //以下是文件上传的代码 DiskFileItemFactory factory = new DiskFileItemFactory(); factory.setRepository(new File(request.getSession().getServletContext().getRealPath("/WEB-INF/temp"))); ServletFileUpload upload = new ServletFileUpload(factory); upload.setHeaderEncoding("UTF-8"); upload.setFileSizeMax(1024*1024*500); List<FileItem> files = upload.parseRequest(request); for (FileItem fileItem : files) { if(fileItem.isFormField()){ String name = fileItem.getFieldName(); String value = http://www.sjsjw.com/100/000071MYM010492/fileItem.getString("UTF-8"); System.out.println(name + ":" + value); continue; } String filename = fileItem.getName(); System.out.println("filename+"+ filename); InputStream in = fileItem.getInputStream(); OutputStream out = new FileOutputStream(new File("c://"+filename)); byte buff[] = new byte[1024]; int len; while((len=in.read(buff)) > 0){ out.write(buff, 0, len); } in.close(); out.close(); } } catch (FileUploadException e) { e.printStackTrace(); }
发送数据
//将数据写出 File file = new File("c://note.db"); if(file.exists()){ return; } InputStream in = new FileInputStream(file); byte buff[] = new byte[1024]; int len; while((len=in.read(buff))>0){ response.getOutputStream().write(buff, 0, len); } in.close(); System.out.println("发送了");