美文网首页
与Android网络请求相爱相杀

与Android网络请求相爱相杀

作者: 葭葭葭葭葭 | 来源:发表于2018-05-06 18:23 被阅读0次

网络请求

补充:

image

以写一个“登录”为例

https://github.com/maoqiu123/saiyou

image

前提小概念

JSON--数据传输格式

  • 可以理解为String类型,因为需要在APIResponce中注明
  • 完整的JSON包括三个部分(如图所示)
    • code
    • msg
    • date
image

Postman的一把爽体验(一不小心把后端搞崩了.....羞涩)

  • GET
    • 网址的后面还需要加上“?+相关信息”
image image
  • Post
    • 上传的item必须是JSON中有的,不然造成空指针现象,导致崩盘
image image

APIService.java

image
public interface APIService {

    /**
     * 登录
     */
    @POST("saiyou/public/index.php/login")
    Call<APIResponse> login(@Body LoginRequest loginRequest);


}

  • @POST 括号内为对应网址的局部
  • @Body 后面跟着Java类的引用,因为后面的LoginRequest是一个新的类
  • call
    • 该方法将请求发送到webserver并返回响应
    • APIResponse 见下下一个标题 是一个独立的Activity
    • login 这个属于网络请求,在LoginActivity.java中的processLogin函数会用到

LoginRequest.java

  • 相当于为Body建立一个框架

  • 设置清晰每一个item 的get 和set方法

  • 这个 get 和 set方法是自己写的,不是拓展自己来的

  • 在 LoginActivity.java文件中就会用到set,用的时候直接像这样

    • 用的时候直接像这样

    LoginRequest request = new LoginRequest();//先实例化一个对象
    request.setIdentifier('defhewkdhkeh"');

image
public class LoginRequest extends BaseModel {
    
    private String phone;
    private String password;

    public LoginRequest() {

    }

    public String getIdenttifier(){
        return phone;
    }

    public void serIdentifier(String phone){
        this.phone=phone;
    }

    public String getPassword(){
        return password;
    }
    
    public void setPassword(String password){
        this.password=password;
    }
    
}

APIResponse.java

  • 数据传输格式JSON中,三大重要组成
    • msg
    • code
    • date

public class APIResponse<T> extends BaseModel {
    
    private int code = -2;
    private T data;
    private String msg="";

    public String getMsg(){
        return msg;
    }

    public void setMsg(String msg){
        this.msg=msg;
    }

    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public T getData() {
        return data;
    }

    public void setData(T data) {
        this.data = data;
    }
}

【注意:】由于date 的内容很多很杂,所以我们传进去的是一个范形T

image

有 { } 的类型--不需要带 ? 和 {...}

image image image

Query获取信息的方法和途径

image

T范式和 多形式响应获取其一Token的方法

1.我们需要缓存的仅仅是响应中的一部分的话,那就需要专门写一个类似model的Java文件,然后从里面获得所需要的token

image
  • TokenRequest.java
image
  • 在XXXPresent.java文件中需要进行改动(retrofit里面的内容),就是改如果数据成功时候 进行数据缓存的方法
image

T范式在Retrofitservice.java中写,然后在P层中的retrofit框架中的BaseObserver中会自动跳出

image

model里面的全部内容只能放后端需要的东西,多少一个都不行,有其他多余的东西,跟在model的参数后面就行

image image

开发中遇到的坑👇

1.【ERROR】: on a null object reference

image
java.lang.NullPointerException:
 Attempt to invoke interface method 'void com.hrsoft.taskgo.mvp.presenter.account.contract.ForgetPasswordContract$Presenter.sendRequestNewInformation(com.hrsoft.taskgo.mvp.model.account.request.ForgetPasswordModel, java.lang.String)'
  on a null object reference

原来

image

后来

image

然而还真是。。。。

2.【ERROR】: on a null object reference

知识须知-网络请求对应的

image

好的👌,继续问题👇

image image image

注意注意!

  • BaseURL需在Config里面进行更改

    • 与后端给出的github相对
    image
    /**
     * APP Server 网络请求BaseUrl
     */
    public static final String APP_SERVER_BASE_URL = "http://www.thmaoqiu.cn/";

相关文章

  • 与Android网络请求相爱相杀

    网络请求 补充: 以写一个“登录”为例 https://github.com/maoqiu123/saiyou 前...

  • 相爱相杀,相爱相杀?

    相爱相杀 婚姻与爱情,这个话题古老而永恒,爱情多样,婚姻亦多样。多样性的呈现,一是在形式,二是在结果。 ...

  • 相爱相杀

    我们时常“相爱”偶尔“相杀” ”相爱”“相杀”好似清晨的粥,深夜的酒,知己与混蛋,二者好似阴阳两...

  • bingo

    相爱相杀

  • 2017-08-26

    相爱相杀

  • 与密友相爱相杀

    上一篇:密友情深 - 简书 1. 小艾 她是一个被农学耽误的建筑师,她画的漫画惟妙惟肖,她的建筑草图好几百张. 她...

  • 与病魔相爱相杀

    昨日下午,上课期间,倍感身体微微发热,心想可能是此节课用力过猛而致。奈何,天气却是寒风凛冽,心想不好,病魔...

  • 与你相爱相杀

    此时的我位于高一30班的教室中,讲台上的班主任还在安排各项事务,不想听啰嗦繁琐的班规,我开始偷瞄身边的人,什么?...

  • 与杂草相爱相杀

    事情总是一分为二的,有好的一面,必然就有不好的一面。 上周四天晚上,电闪雷鸣,狂风大作,大雨如注。 可能到雨季了吧...

  • 与疫情相爱相杀

    对这个疫情我真的是又爱又恨。之前有消息说我被抽到检查了,结果今天又得知的最新消息,因为疫情影响,检查暂时往后推迟,...

网友评论

      本文标题:与Android网络请求相爱相杀

      本文链接:https://www.haomeiwen.com/subject/mcwurftx.html