Android 数据传递的几种方式,HttpLoggingInterceptor消息拦截器

简介: Android 数据传递的几种方式,HttpLoggingInterceptor消息拦截器

Android 数据传递的几种方式


一。用intent传递


第1个activity:

Intent intent =new Intent(this,TwoActivity.class);
intent.putExtra("data",str);
startActivity(intent);

第2个activity:

Intent intent=getIntnet();
String str=intent.getStringExtra("data")

二。使用bundle进行传值:


第1个activity:

Intentintent =new Intent(MainActivity.this,TwoActivity.class);
Bundle bundle=new Bundle();
bundle.PutString("data",str);
intent.putExtra("bun",bundle);
startActivity(intent);

第2个activity:

Intent intent =getIntent();
bundle bundle=inteent.getBundlePutExtra("bun");
String str =Bundle.getString("data");
tv.setText();

三。当antivity销毁时传递数据StartActivityForResult


第1个activity:

Intent intent =new Intent(MainActivity.this,TwoActivity.this);
StartActivityForResult(intent,1111)
protected viod onActivityResult(int requestCode,int resultCode,Intent data){
super.onActivityResult(request,resultCode,data);
String str=data.getStringExtra("data")
tv.setText(str);
}

第2个activity:

Intent intent =new Intent();
intent.putExtra("data",)

HttpLoggingInterceptor消息拦截器


使用原因:


利用了消息拦截器可以清楚的看到接口返回的所有内容。不需要重新使用fildder等抓包工具来做分析。


1.添加依赖

//okhttp的log信息
compile 'com.squareup.okhttp3:logging-interceptor:3.4.1'

2.在合适的位置初始化(这里放在了构造,因为是单例,响应的拦截器也只new一次)

private HttpMethod() {
       HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() {
            @Override
            public void log(String message) {
                try {
                    String text = URLDecoder.decode(message, "utf-8");
                    Log.e("OKHttp-----", text);
                } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                    Log.e("OKHttp-----", message);
                }
            }
        });
        //这里可以builder(). 添加更多的内容 具体看需求
        mClient = new OkHttpClient.Builder().addInterceptor(interceptor).build();
        //这行必须加 不然默认不打印
        interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
    }

3.在retrofit中设置httpclient

Retrofit retrofit = new Retrofit.Builder()
                        .baseUrl(BASE_URL)
                        .addConverterFactory(GsonConverterFactory.create())
                        .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
                        //添加HttpClient
                        .client(mClient)
                        .build();
                mApiService = retrofit.create(ApiService.class);

setlevel用来设置日志打印的级别,共包括了四个级别:NONE,BASIC,HEADER,BODY


  1. BASEIC:请求/响应行
  2. HEADER:请求/响应行 + 头
  3. BODY:请求/响应航 + 头 + 体

image.png



目录
相关文章
|
5天前
|
消息中间件 网络协议 Java
Android 开发中实现数据传递:广播和Handler
Android 开发中实现数据传递:广播和Handler
18 1
|
5天前
|
安全 API Android开发
Android网络和数据交互: 解释Retrofit库的作用。
Android网络和数据交互: 解释Retrofit库的作用。
41 0
|
5天前
|
XML 物联网 API
Android Ble蓝牙App(五)数据操作
Android Ble蓝牙App(五)数据操作
133 0
|
5天前
|
JSON Android开发 数据格式
android与Web服务器交互时的cookie使用-兼谈大众点评数据获得(原创)
android与Web服务器交互时的cookie使用-兼谈大众点评数据获得(原创)
21 2
|
5天前
|
Java Linux API
统计android设备的网络数据使用量
统计android设备的网络数据使用量
16 0
|
23小时前
|
数据库 Android开发
Android 通过升级SettingsProvider数据强制覆盖用户的设置项
Android 通过升级SettingsProvider数据强制覆盖用户的设置项 【5月更文挑战第7天】
14 5
|
5天前
|
存储 Java Android开发
Android轻量级数据SparseArray详解
Android轻量级数据SparseArray详解
7 0
|
5天前
|
Android开发 数据库管理
Android如何在Activity和Service之间传递数据
Android如何在Activity和Service之间传递数据
12 3
|
5天前
|
XML JSON API
转Android上基于JSON的数据交互应用
转Android上基于JSON的数据交互应用
11 1
|
5天前
|
Android开发 开发者
Android网络和数据交互: 请解释Android中的AsyncTask的作用。
Android's AsyncTask simplifies asynchronous tasks for brief background work, bridging UI and worker threads. It involves execute() for starting tasks, doInBackground() for background execution, publishProgress() for progress updates, and onPostExecute() for returning results to the main thread.
12 0