與Android網(wǎng)絡(luò)請(qǐng)求相愛相殺

網(wǎng)絡(luò)請(qǐng)求

補(bǔ)充:

image

以寫一個(gè)“登錄”為例

https://github.com/maoqiu123/saiyou

image

前提小概念

JSON--數(shù)據(jù)傳輸格式

  • 可以理解為String類型,因?yàn)樾枰贏PIResponce中注明
  • 完整的JSON包括三個(gè)部分(如圖所示)
    • code
    • msg
    • date
image

Postman的一把爽體驗(yàn)(一不小心把后端搞崩了.....羞澀)

  • GET
    • 網(wǎng)址的后面還需要加上“?+相關(guān)信息”
image
image

  • Post
    • 上傳的item必須是JSON中有的,不然造成空指針現(xiàn)象,導(dǎo)致崩盤
image
image

APIService.java

image
public interface APIService {

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


}

  • @POST 括號(hào)內(nèi)為對(duì)應(yīng)網(wǎng)址的局部
  • @Body 后面跟著Java類的引用,因?yàn)楹竺娴腖oginRequest是一個(gè)新的類
  • call
    • 該方法將請(qǐng)求發(fā)送到webserver并返回響應(yīng)
    • APIResponse 見下下一個(gè)標(biāo)題 是一個(gè)獨(dú)立的Activity
    • login 這個(gè)屬于網(wǎng)絡(luò)請(qǐng)求,在LoginActivity.java中的processLogin函數(shù)會(huì)用到

LoginRequest.java

  • 相當(dāng)于為Body建立一個(gè)框架

  • 設(shè)置清晰每一個(gè)item 的get 和set方法

  • 這個(gè) get 和 set方法是自己寫的,不是拓展自己來的

  • 在 LoginActivity.java文件中就會(huì)用到set,用的時(shí)候直接像這樣

    • 用的時(shí)候直接像這樣

    LoginRequest request = new LoginRequest();//先實(shí)例化一個(gè)對(duì)象
    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

  • 數(shù)據(jù)傳輸格式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 的內(nèi)容很多很雜,所以我們傳進(jìn)去的是一個(gè)范形T

image

有 { } 的類型--不需要帶 ? 和 {...}

image
image
image

Query獲取信息的方法和途徑

image

T范式和 多形式響應(yīng)獲取其一Token的方法

1.我們需要緩存的僅僅是響應(yīng)中的一部分的話,那就需要專門寫一個(gè)類似model的Java文件,然后從里面獲得所需要的token

image
  • TokenRequest.java
image
  • 在XXXPresent.java文件中需要進(jìn)行改動(dòng)(retrofit里面的內(nèi)容),就是改如果數(shù)據(jù)成功時(shí)候 進(jìn)行數(shù)據(jù)緩存的方法
image

T范式在Retrofitservice.java中寫,然后在P層中的retrofit框架中的BaseObserver中會(huì)自動(dòng)跳出

image

model里面的全部內(nèi)容只能放后端需要的東西,多少一個(gè)都不行,有其他多余的東西,跟在model的參數(shù)后面就行

image
image

開發(fā)中遇到的坑??

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

知識(shí)須知-網(wǎng)絡(luò)請(qǐng)求對(duì)應(yīng)的

image

好的??,繼續(xù)問題??

image
image
image

注意注意!

  • BaseURL需在Config里面進(jìn)行更改

    • 與后端給出的github相對(duì)
    image
    /**
     * APP Server 網(wǎng)絡(luò)請(qǐng)求BaseUrl
     */
    public static final String APP_SERVER_BASE_URL = "http://www.thmaoqiu.cn/";

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,174評(píng)論 25 708
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,641評(píng)論 19 139
  • 【詩語揚(yáng)舲】20180316學(xué)習(xí)力踐行D153 今晚回家,路上小語子一直要我跟她數(shù)數(shù)到一百,最近對(duì)100這個(gè)數(shù)字特...
    日遙草青閱讀 163評(píng)論 0 0
  • 結(jié)局一般都是好的,本人不看女主白癡~~因?yàn)榭戳藭?huì)火大 ¥古代武俠言情(結(jié)局好~~) 1.這個(gè)男人有點(diǎn)酷(開頭夠搞笑...
    喝露水的朱朱俠閱讀 2,084評(píng)論 0 1
  • 時(shí)間總是不給我們留有一絲一毫倦怠的空隙,它一直飛一樣的奔向前方,把所有痛快的,不痛快的記憶都狠狠的甩在后...
    蘭雪清風(fēng)閱讀 366評(píng)論 0 1

友情鏈接更多精彩內(nèi)容