• Android网络框架---OkHttp3


    1、添加依赖 compile 'com.squareup.okhttp3:okhttp:3.4.2'
      project Structure-->dependencied/搜索okhttp.

           compile 'com.squareup.okhttp3:okhttp:3.4.2'

     2、添加权限
     <uses-permission android:name="android.permission.INTERNET"/>

       <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

      1 public class MainActivity extends AppCompatActivity {
      2 
      3     @Override
      4     protected void onCreate(Bundle savedInstanceState) {
      5         super.onCreate(savedInstanceState);
      6         setContentView(R.layout.activity_main);
      7     }
      8 
      9     //基本请求默认GET请求
     10     public void net1(View v){
     11         //可以通过构造方法来使用。使用Builder模式可以设置一些属性
     12 //        OkHttpClient client = new OkHttpClient();
     13         //缓存的请求的数据,json字符串,
     14         //Cache questCache = new Cache(new File("cache"),1024);
     15         OkHttpClient client = new OkHttpClient.Builder()
     16                 //读取超时5s
     17                 .readTimeout(5000, TimeUnit.MILLISECONDS)
     18                 //自带缓存,缓存可做可不做,做了就是让刷新的时候方便些,不会重复去请求同一个url多次
     19                 //.cache(questCache)
     20                 .build();
     21 
     22         //默认GET请求
     23         Request request = new Request.Builder()
     24                 .url("https://www.baidu.com")
     25                 .build();
     26 
     27         //call就是我们可以执行的请求类
     28         Call call = client.newCall(request);
     29 
     30 
     31 //        try {
     32 //            //同步方法,程序运行到这里会等待,所以这里我们不用这个方法
     33 //            Response execute = call.execute();
     34 //        } catch (IOException e) {
     35 //            e.printStackTrace();
     36 //        }
     37 
     38         //异步请求
     39         call.enqueue(new Callback() {
     40             @Override
     41             public void onFailure(Call call, IOException e) {
     42                 Log.e("TAG","请求失败");
     43             }
     44 
     45             @Override
     46             public void onResponse(Call call, Response response) throws IOException {
     47                 //子线程
     48                 Log.e("TAG",Thread.currentThread().getName()+"---结果:"+response.body().string());
     49                 //修改UI使用 runOnUiThread();或者使用Handler发送更新UI消息给主线程
     50             }
     51         });
     52 
     53         //取消
     54 //        call.cancel();
     55     }
     56 
     57     //POST请求
     58     public void net2(View v){
     59         OkHttpClient client = new OkHttpClient.Builder()
     60                 .readTimeout(5000,TimeUnit.MILLISECONDS)
     61                 .build();
     62 
     63         //创建Form表单对象,可以add多个键值对
     64         RequestBody body = new FormBody.Builder()
     65                 .add("showapi_appid","27306")
     66                 .add("showapi_sign","150e9206e7f542bab4affe49d73cb920")
     67                 .build();
     68 
     69         Request request = new Request.Builder().url("http://route.showapi.com/578-6")
     70                 .post(body)//添加参数
     71                 .build();
     72 
     73         Call call = client.newCall(request);
     74         call.enqueue(new Callback() {
     75             @Override
     76             public void onFailure(Call call, IOException e) {
     77                 Log.e("TAG","请求失败");
     78             }
     79 
     80             @Override
     81             public void onResponse(Call call, Response response) throws IOException {
     82                 Log.e("TAG","---->"+response.toString());
     83                 //子线程
     84             }
     85         });
     86 
     87     }
     88 
     89     //文件上传
     90     public void net3(View v){
     91         OkHttpClient client = new OkHttpClient.Builder()
     92                 .readTimeout(5000,TimeUnit.MILLISECONDS)
     93                 .build();
     94 
     95         //添加多个文件
     96         RequestBody fileBody = MultipartBody.create(MediaType.parse("application/octet-stream"),new File("上传的文件地址"));
     97 
     98 
     99         RequestBody body = new MultipartBody.Builder()
    100                 //设置为表单类型
    101                 .setType(MultipartBody.FORM)
    102                 //添加表单键值
    103                 .addFormDataPart("image头像字段名称","name文件名称",fileBody)
    104                 .build();
    105 
    106         Request request = new Request.Builder()
    107                 .url("http://192.168.18.250")
    108                 .post(body)
    109                 .build();
    110 
    111         Call call = client.newCall(request);
    112         call.enqueue(new Callback() {
    113             @Override
    114             public void onFailure(Call call, IOException e) {
    115 
    116             }
    117 
    118             @Override
    119             public void onResponse(Call call, Response response) throws IOException {
    120                 //子线程
    121             }
    122         });
    123     }
    124 }
    MainActivity.java

    参考资料:

    http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0106/2275.html
  • 相关阅读:
    1212. 地宫取宝
    895. 最长上升子序列
    高層タワー [MISSION LEVEL: B]
    分组背包
    多重背包
    1015. 摘花生
    1211. 蚂蚁感冒
    1205. 买不到的数目
    SQL基础教程(第2版)第4章 数据更新:4-2 数据的删除(DELETE)
    SQL基础教程(第2版)第4章 数据更新:4-1 数据的插入(INSERT)
  • 原文地址:https://www.cnblogs.com/Claire6649/p/6078191.html
Copyright © 2020-2023  润新知