<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      OkHttp封裝之后使用

      代碼都封裝好了,上層Activity如何調用呢?

      1.依賴

      如果是android studio開發支持在線依賴(我已經把項目添加到jcenter上):

      compile 'com.ansen.http:okhttpencapsulation:1.0.1'
      

      如果是eclipse那你先把ide切換到android studio吧。。。不閑麻煩的話也可以把源碼module的源碼copy出來,反正也就幾個類。

      2.初始化HTTPCaller類

      初始化的工作可以放Application,新建MyApplication類繼承Application。初始化的時候通過HttpConfig設置一些參數,也可以添加公共參數。

      public class MyApplication extends Application{
          @Override
          public void onCreate() {
              super.onCreate();
      
              HttpConfig httpConfig=new HttpConfig();
              httpConfig.setAgent(true);//有代理的情況能不能訪問
              httpConfig.setDebug(true);//是否debug模式 如果是debug模式打印log
              httpConfig.setTagName("ansen");//打印log的tagname
      
              //可以添加一些公共字段 每個接口都會帶上
              httpConfig.addCommonField("pf","android");
              httpConfig.addCommonField("version_code","1");
      
              //初始化HTTPCaller類
              HTTPCaller.getInstance().setHttpConfig(httpConfig);
          }
      }
      

      因為自定義Application,需要給AndroidManifest.xml文件application標簽中的android:name屬性賦值,指定自己重寫的MyApplication。

      發送get請求

      發送get請求就一行代碼。

      HTTPCaller.getInstance().get(User.class, "http://139.196.35.30:8080/OkHttpTest/getUserInfo.do?per=123", null, requestDataCallback);
      

      請求回調

      http請求回調接口,無論成功或者失敗都會回調。因為是測試所以都用在這個接口來回調,在真實的企業開發中,不同的請求用不同的回調。

      private RequestDataCallback requestDataCallback = new RequestDataCallback<User>() {
              @Override
              public void dataCallback(User user) {
                  if(user==null){
                      Log.i("ansen", "請求失敗");
                  }else{
                      Log.i("ansen", "獲取用戶信息:" + user.toString());
                  }
      
              }
          };
      

      發送post請求

      post請求參數不是跟在url后面的,所以需要把請求參數放到集合里面。因為登錄接口也是返回的用戶信息,所以可以跟get請求用同一回調。

      List<NameValuePair> postParam = new ArrayList<>();
      postParam.add(new NameValuePair("username","ansen"));
      postParam.add(new NameValuePair("password","123"));
      HTTPCaller.getInstance().post(User.class, "http://139.196.35.30:8080/OkHttpTest/login.do", null, postParam, requestDataCallback);
      

      上傳文件

      1.上傳文件不帶回調進度
      updaloadFile(null);
      
      2.上傳文件回調上傳進度
      updaloadFile(new ProgressUIListener(){
          @Override
          public void onUIProgressChanged(long numBytes, long totalBytes, float percent, float speed) {
              Log.i("ansen","numBytes:"+numBytes+" totalBytes:"+totalBytes+" percent:"+percent+" speed:"+speed);
          }
      });
      

      上傳文件跟其他表單參數不一樣的地方就是new NameValuePair對象的時候需要傳入三個參數,最后一個參數需要設置成true。

      private void updaloadFile(ProgressUIListener progressUIListener){
          List<NameValuePair> postParam = new ArrayList<>();
          postParam.add(new NameValuePair("username", "ansen"));
          postParam.add(new NameValuePair("password", "123"));
          String filePath=copyFile();//復制一份文件到sdcard上,并且獲取文件路徑
          postParam.add(new NameValuePair("upload_file",filePath,true));
          if(progressUIListener==null){//上傳文件沒有回調進度條
              HTTPCaller.getInstance().postFile(User.class, "http://139.196.35.30:8080/OkHttpTest/uploadFile.do", null, postParam, requestDataCallback);
          }else{//上傳文件并且回調上傳進度
              HTTPCaller.getInstance().postFile(User.class, "http://139.196.35.30:8080/OkHttpTest/uploadFile.do", null, postParam, requestDataCallback,progressUIListener);
          }
      }
      

      上傳文件(傳入byte數組)

      byte[] bytes=getUploadFileBytes();//獲取文件內容存入byte數組
                  HTTPCaller.getInstance().postFile(User.class, "http://139.196.35.30:8080/OkHttpTest/uploadFile.do", null, "upload_file","test.txt",bytes,requestDataCallback);
      

      上傳文件(傳入byte數組)&&回調上傳進度

      byte[] bytes=getUploadFileBytes();//獲取文件內容存入byte數組
      HTTPCaller.getInstance().postFile(User.class, "http://139.196.35.30:8080/OkHttpTest/uploadFile.do", null, "upload_file", "test.txt", bytes, requestDataCallback, new ProgressUIListener() {
          @Override
          public void onUIProgressChanged(long numBytes, long totalBytes, float percent, float speed) {
              Log.i("ansen","upload file content numBytes:"+numBytes+" totalBytes:"+totalBytes+" percent:"+percent+" speed:"+speed);
          }
      });
      

      下載文件&&回調下載進度

      String saveFilePath=Environment.getExternalStorageDirectory() + "/test/test222.txt";
      HTTPCaller.getInstance().downloadFile("http://139.196.35.30:8080/OkHttpTest/upload/test.txt",saveFilePath,null,new ProgressUIListener(){
          @Override
          public void onUIProgressChanged(long numBytes, long totalBytes, float percent, float speed) {
              Log.i("ansen","dowload file content numBytes:"+numBytes+" totalBytes:"+totalBytes+" percent:"+percent+" speed:"+speed);
          }
      });
      

      修改公共參數

      HTTPCaller.getInstance().updateCommonField("version_code","2");//更新公共字段版本號的值
      

      源碼下載

      OkHttp如何封裝點擊這里

      如果你想第一時間看我的后期文章,掃碼關注公眾號,每周不定期推送Android開發實戰教程文章...

            Android開發666 - 安卓開發技術分享
                   掃描二維碼加關注
      

      Android開發666

      posted @ 2017-08-31 18:43  安輝  閱讀(925)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 久久久亚洲欧洲日产国码606| 临城县| 大肉大捧一进一出好爽视频mba| 亚洲综合区激情国产精品| 久久88香港三级台湾三级播放| 最新中文字幕国产精品| 国产裸体无遮挡免费精品| 亚洲日本va午夜在线影院| 免费午夜无码片在线观看影院| 国产爽视频一区二区三区| 制服丝袜国产精品| 日本黄页网站免费观看| 亚洲免费一区二区av| 欧美性猛交xxxx乱大交丰满| 国产乱妇乱子视频在播放| 网友自拍视频一区二区三区| 少妇真人直播免费视频| 天干天干夜啦天干天干国产| 精品视频在线观看免费观看| 国产一区二区在线影院| 加勒比中文字幕无码一区| 亚洲精品日韩精品久久| 精品无码av无码专区| gogogo高清在线播放免费| 久久天天躁狠狠躁夜夜躁| 久久丁香五月天综合网| 18岁日韩内射颜射午夜久久成人| 尹人香蕉久久99天天拍| 少妇xxxxx性开放| 亚洲精品国精品久久99热| 亚洲av影院一区二区三区| 亚洲国产日韩A在线亚洲| 99中文字幕精品国产| 九九久久人妻一区精品色| 国产午夜成人久久无码一区二区| 亚洲男人电影天堂无码| 国产卡一卡二卡三免费入口 | 国产精品久久无码一区| 内射人妻视频国内| 青青草无码免费一二三区| 虎白女粉嫩尤物福利视频|