快速使用JDHttpToolkit

首先,初始化JDHttpToolkit

  JDHttpTookit.initialize(JDHttpTookit.newBuilder(this)
        .setSecretKey(xxx)
        .build());

简单初始化,SecretKey为网关平台申请的应用唯一的key,申请流程请参考:网关接入文档 ; 若涉及详细功能,参考API手册

简单发送一个POST请求

  // 实例化一个HttpSetting对象
  HttpSetting httpSetting = new HttpSetting();
  // 设置用户请求functionId
  httpSetting.setFunctionId("yourFunctionId");
  // 设置用户请求域名
  httpSetting.setHost("yourHost");
  // 设置请求回调函数
  httpSetting.setListener(new HttpGroup.CustomOnAllListener(){

    @Override
    public void onStart() {
        //TODO 请求发出去之前设置
    }

    @Override
    public void onEnd(HttpResponse httpResponse) {
        //TODO 请求返回数据处理
    }

    @Override
    public void onError(HttpError error) {
        //TODO 异常情况
    }

    @Override
    public void onProgress(int max, int progress) {}});

    // 把网络请求加入线程池
    HttpGroupUtils.getHttpGroupaAsynPool().add(httpSetting);

下载一个文件

//设置本地存储选项
   final FileGuider savePath = new FileGuider();
   savePath.setSpace(FileService.Directory.INTERNAL);
   savePath.setChildDirName(UnIconConfigConstants.ICON_DIR);
   savePath.setImmutable(false);
   savePath.setFileName(model.id+".png");
   savePath.setMode(Context.MODE_WORLD_READABLE);

   // 启动任务
   final HttpSetting httpSetting = new HttpSetting();
   httpSetting.setUrl(model.url);
   httpSetting.setCacheMode(HttpSetting.CACHE_MODE_ONLY_NET);
   httpSetting.setType(HttpGroupSetting.TYPE_FILE);
   httpSetting.setSavePath(savePath);
   httpSetting.setBreakpointTransmission(false);
   httpSetting.setAttempts(1);
   httpSetting.setListener(new HttpGroup.OnAllAndPauseListener() {
       @Override
       public void onEnd(HttpResponse httpResponse) {
          //TODO 处理是否全部下载完毕
       }
       @Override
       public void onError(HttpError error) {
          //TODO 下载出错
       }
       @Override
       public void onPause() {
          //TODO 下载暂停
       }
       @Override
       public void onProgress(int max, int progress) {
          //TODO 下载进度
       }
       @Override
       public void onStart() {
          //TODO 下载前设置
       }
   });
   HttpGroupUtils.getHttpGroupaAsynPool().add(httpSetting);

网络请求登录态

京东商城主站登录态(cookie信息)是通过登录模块完成登录操作,将cookie信息做了本地化保存,网络请求时需要校验用户登录态进行网络请求。

JDHttpToolkit不维护用户cookie,开发人员需要外部设置依赖接口实现,接口名称ILoginUserController,设置方法如下:

  //登录依赖cookie信息
  setLoginUserControllerImpl(new ILoginUserController(){
    @Override
    public String getCookie() {
        return SafetyManager.getCookies();
    }
    ...
  })

关于网络弹框的设置

loading圈

JDHttpToolkit框架提供了loading圈展示的功能,开发人员可以根据需求使用自定制的loading圈 或者采用系统默认的loading效果。

需要定制化的默认loading圈效果设置如下接口

  //JDHttpToolkit初始化过程中使用
  setCustomUIComponentImpl(new ICustomUIComponent(){...})

HttpSetting使用过程中需要如下设置

  //缺省或者设置如下属性
  httpSetting.setEffect(HttpSetting.EFFECT_DEFAULT);

并且,不要使用CustomOnAllListener这个作为HttpSetting网络回调函数,建议采用HttpGroup.OnAllListener()类

HttpGroup获取接口需要传入Activity上下文,因为UI展示涉及到主线程操作

  HttpGroupUtils.getHttpGroupaAsynPool(this);

HttpSetting支持用户制定ViewGroup作为loading圈的展示区域,注意首先是ViewGroup,其次不要采用LinearLayout,因为这样会使loading圈跟子view发生布局不兼容, 如果不指定展示区域,默认Activity的DecorView作为统一的loading展示区域,且每个Activity实例同时展示一个loading圈

  httpSetting.setProgressBarRootLayout(testViewGroup);

错误弹框

JDHttpToolkit采用了系统默认的AlertDialog作为网络失败弹框,一般支持的错误弹框风格如下:

  //HttpSetting类中错误框常量定义
  public static final int ERROR_DIALOG_TYPE_DEFAULT = 0;      // 默认为0
  public static final int ERROR_DIALOG_TYPE_ONLY_CANCEL = 1;  // 只有取消按钮
  public static final int ERROR_DIALOG_TYPE_BACK_RETRY = 2;   // 返回上一页和重试
  public static final int ERROR_DIALOG_TYPE_SETUP_CANCEL = 3; // 设置网络和取消

弹框触发的条件

  httpSetting.setNotifyUser(true);

且当前网络状态为连接状态

文件上传

SimpleFileUploader是基于OkHttp组件实现的,用于支持JDHttpToolkit框架支持图片、文件上传。需要注意的是,SimpleFileUploader对于多个上传请求的策略是排队上传。SimpleFileUploader的使用方法如下所示:

 SimpleFileUploader.getInstance().upload(String requestUrl,String filePath,OnAllListener listener);

同时,也提供了自定义请求header和source的接口:

 SimpleFileUploader.getInstance().upload(UploadRequest request, HttpGroup.OnAllListener listener);

取消上传

如果要取消一个请求,可以调用cancel方法:

 SimpleFileUploader.getInstance().cancel(String requestUrl);

results matching ""

    No results matching ""