您的位置:首页 > 理论基础 > 计算机网络

okhttp方法上传图片和接收图片

2016-05-20 20:37 791 查看
1、用户端:okhttp方法的请求方式

private void okHttppost() {

  OkHttpClient okHttpClient = new OkHttpClient();    

 RequestBody body = new FormEncodingBuilder()
//创建post请求体

.add("username", "zhangsan").add("pwd", "123456").build();

        Request request = new Request.Builder()

.url("http://192.168.11.17:8080/maWep/LoginServlet").post(body).build();

 try { //执行访问网络

Response response = okHttpClient.newCall(request).execute();

String s = new String(response.body().bytes());

} catch (IOException e) {e.printStackTrace(); }}

2、上传文件图片

final AssetManager.AssetInputStream ais =//转化为图片流

(AssetManager.AssetInputStream) getResources().openRawResource(R.raw.caocao);

new Thread() {public void run() { singImage(ais);}}.start();

private void singImage(InputStream ais) { try {

 URL url = new URL("http://192.168.11.17:8080/maWep/UpLoadImage");

 HttpURLConnection conn = (HttpURLConnection) url.openConnection();

conn.setRequestMethod("POST");

conn.setDoInput(true); conn.setDoOutput(true);

conn.setConnectTimeout(30000);conn.setReadTimeout(30000);

conn.connect();

OutputStream out = conn.getOutputStream();

 byte[] bytes = new byte[1024];//将图片流写入到输出流中

 int len = 0; while ((len = ais.read(bytes)) != -1) {

out.write(bytes, 0, len);}

 out.flush(); out.close();conn.getInputStream();

 } catch (Exception e) {e.printStackTrace(); }}

3、服务器端:

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

response.setContentType("text/html");PrintWriter out = response.getWriter();

 InputStream inputStream = request.getInputStream();//接收图片流

 String path=getServletContext().getRealPath("/image");//获取文件绝对路径

 FileOutputStream outputStream = //输出流用来存储图片

new FileOutputStream(new File(path,"/abc.jpg"));

byte [] b =new byte[1024]; int len=0;

 while((len=inputStream.read(b))!=-1){outputStream.write(b,0,len);}

inputStream.close();out.flush();out.close();}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: