当前位置:   article > 正文

OkHttp 获取文本、文件、Post请求_okhttp获取页面文字

okhttp获取页面文字

用过Volley的人应该感觉封装已经相当不错了,但有些人说这个Okhttp 的效率高,作为一名技术屌丝,真心感觉不出来。

不过简单的使用OkHttp后老是感觉访问完数据后,这个访问的线程会经过一段时间才会关闭,错以为访问失败。使用这个OkHttp给我最大的感受就是,如果有Volley我绝不会用这个OkHttp,比如访问一张图片的时候,这个OkHttp貌似只能帮你请求到这个bytes数据就Ok了,而Volley会返回成Bitmap,并且这个还可以方便的改变图片的尺寸,和大小,还可以进行设置缓存什么的以免OOM,但这个OkHttp就无能为力了,或许是我还不会全部的使用,只是简单的下载文件罢了。

我是采用三种常见的形式进行举例的:读取文本内容,下载文件,简单的Post 请求。

既然是第三方,所以必不可少的就是导包了:在Eclipce中需要导两个包:okhttp-3.4.1.jar   和 okio-1.8.0.jar 

对于请求又分为两种,一个就是填参就行,另一个就是直接匿名类直接new 就行,这个我是用请求文本和下载文件这两种进行区分。

请求文本

  1. /**
  2. * 读取文本内容
  3. */
  4. private static void accessTxt() {
  5. // TODO Auto-generated method stub
  6. OkHttpClient okClient = new OkHttpClient();
  7. Request request = new Request.Builder().url("http://localhost:8081/LoginTest/data.txt").build();
  8. try {
  9. Response response = okClient.newCall(request).execute();
  10. if (response.isSuccessful()) {
  11. String msg = response.body().string();
  12. System.out.println(msg);
  13. } else {
  14. System.out.println("连接服务器失败返回错误代码" + response.code());
  15. }
  16. } catch (IOException e) {
  17. // TODO Auto-generated catch block
  18. e.printStackTrace();
  19. }
  20. }

请求文件

  1. /**
  2. * 下载文件
  3. */
  4. private static void accessImageAndFile() {
  5. // TODO Auto-generated method stub
  6. OkHttpClient okClient = new OkHttpClient();
  7. Request request = new Request.Builder().url("http://localhost:8081/LoginTest/image.jpg").build();
  8. try {
  9. okClient.newCall(request).enqueue(new Callback() {
  10. @Override
  11. public void onResponse(Call arg0, Response arg1) throws IOException {
  12. // TODO Auto-generated method stub
  13. byte[] buffer = arg1.body().bytes();
  14. OutputStream oStream = new FileOutputStream("newImage.jpg");
  15. oStream.write(buffer);
  16. oStream.close();
  17. }
  18. @Override
  19. public void onFailure(Call arg0, IOException arg1) {
  20. // TODO Auto-generated method stub
  21. System.out.println("获取服务器数据失败");
  22. }
  23. });
  24. } catch (Exception e) {
  25. // TODO: handle exception
  26. System.out.println(e);
  27. }
  28. }


Post请求

  1. /**
  2. * post请求
  3. */
  4. private static void postAccess() {
  5. // TODO Auto-generated method stub
  6. OkHttpClient cHttpClient = new OkHttpClient();
  7. // 创建表单构建器
  8. FormBody.Builder builder = new FormBody.Builder();
  9. builder.add("userName", "hejingzhou");
  10. builder.add("userPassword", "1230");
  11. // 创建请求体,通过构建器请求体
  12. RequestBody body = builder.build();
  13. Request request = new Request.Builder().url("http://localhost:8081/LoginTest/hello").post(body).build();
  14. try {
  15. Response response = cHttpClient.newCall(request).execute();
  16. if (response.isSuccessful()) {
  17. System.out.println("服务器返回代码: " + response.code());
  18. System.out.println(response.body().string());
  19. } else {
  20. int backCode = response.code();
  21. System.out.println(backCode);
  22. }
  23. } catch (IOException e) {
  24. // TODO Auto-generated catch block
  25. e.printStackTrace();
  26. }
  27. }
关于body 中常用的返回数据类型方法:
  1. response.body().toString();
  2. response.body().bytes();
  3. response.body().byteStream();
  4. response.body().charStream();
  5. response.body().contentLength();
  6. response.body().contentType();
  7. response.body().source();

源码:http://download.csdn.net/detail/csdnhejingzhou/9608538
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/225329
推荐阅读
相关标签
  

闽ICP备14008679号