<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 目錄 [TOC] NoHttp的幾個默認請求,例如`StringRequest`、`BitmapRequest`全都是繼承`RestRequest<T>`這個基類的,所以我們自定義請求的時候也要繼承`RestRequest<T>`這個基類,泛型寫你想請求的數據。 # FastJsonRequest 例如我們用`FastJson`的`JSONObject`自定義一個請求。 ```java public class FastJsonRequest extends RestRequest<JSONObject> { public FastJsonRequest(String url) { this(url, RequestMethod.GET); } public FastJsonRequest(String url, RequestMethod requestMethod) { super(url, requestMethod); // 設置Accept請求頭,告訴服務器,我們需要application/json數據。 setAccept(Headers.HEAD_VALUE_ACCEPT_APPLICATION_JSON); } /** * 解析服務器響應數據為你的泛型T,這里也就是JSONObject。 * * @param responseHeaders 服務器響應頭。 * @param responseBody 服務器響應包體。 * @return 返回你的泛型對象。 */ @Override public JSONObject parseResponse(Headers responseHeaders, byte[] responseBody) { String result = StringRequest.parseResponseString(responseHeaders, responseBody); return JSON.parseObject(result); // StringRequest就是少了這句話而已。 } } ``` * 關于`parseResponse()`方法的說明 1. 這里要把byte[] body解析成Sting,一般我們用`String s = new String(body);`解析。 2. 但是服務器發送的數據有編碼,所以我們要分析`header`中的`contentType`的編碼是`utf-8`還是`gbk`或者其它,為了避免每個`request`都要解析`String`,作者在`StringRequest`寫了一個靜態方法統一解析,有疑問的人看點擊進去看源碼。 3. 拿到String之后,利用FastJson把數據解析成`JSONObject`對象。當然這里可以直接解析成JavaBean,請往下看。 * 使用方法 其它使用方法和上面的NoHttp的原生使用方法一樣,要注意的是,因為這里是你自己寫的類,所以不能通過`NoHttp.create...Request`來寫了,只能通過`new`的方式來構造。 ```java // 默認使用GET請求方法。 FastJsonRequst request = new FastJsonRequest(url); // 或者指定請求方法。 FastJsonRequst request = new FastJsonRequest(url, RequestMethod.POST); ``` # 請求JavaBean 1. 如果你沒有看上面的自定FastJsonRequest,請先看過后再看自定義請求JavaBean會更容易理解。這里還是繼承`RestRequest<T>`基類。 2. 這里先假設我們服務器返回的還是`json`類型的數據,如果是XML的話,利用[Simple](http://simple.sourceforge.net/)之類的工具解析。 ```java public class JavaBeanRequest<T> extends RestRequest<T> { // 要解析的JavaBean的class。 private Class<T> clazz; public JavaBeanRequest(String url, Class<T> clazz) { this(url, RequestMethod.GET, clazz); } public JavaBeanRequest(String url, RequestMethod requestMethod, Class<T> clazz) { super(url, requestMethod); this.clazz = clazz; } @Override public T parseResponse(Headers responseHeaders, byte[] responseBody) throws Throwable { String response = StringRequest.parseResponseString(responseHeaders, responseBody); // 這里如果數據格式錯誤,或者解析失敗,會在失敗的回調方法中返回 ParseError 異常。 return JSON.parseObject(response, clazz); } } ``` * 關于`parseResponse()`方法的說明 1. 和上面自定FastJson一樣,先要把數據解析成String。 2. 接著利用FastJson把String解析成我們想要的`JavaBean`,比如這里還需要一個`JavaBean`的`class`參數,那我們就在構造方法傳入。 * 使用方法 其它使用方法和上面的NoHttp的原生使用方法一樣,要注意的是,因為這里是你自己寫的類,所以不能通過`NoHttp.create...Request`來寫了,只能通過`new`的方式來構造。 ```java // 默認使用GET請求方法。 JavaBeanRequest<UserInfo> request = new JavaBeanRequest<>(url, UserInfo.class); // 或者指定請求方法。 JavaBeanRequest<GoodsInfo> request = new JavaBeanRequest<>(url, RequestMethod.POST, GoodsInfo.class); ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看