<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國際加速解決方案。 廣告
                ## 6.2.1 使用說明 將框架目錄下的 ./SDK/JAVA/net 目錄中的全部代碼拷貝到項目里面即可使用。如: ![](http://7qnay5.com1.z0.glb.clouddn.com/qq20151017100539.jpg) ## 6.2.2 代碼示例 如下是使用的代碼場景片段。 首先,我們需要導入SDK包: ```javascript //FullscreenActivity.java import net.phalapi.sdk.*; ``` 然后,準備一個子線程調用,并在此線程中實現接口請求: ```javascript /** * 網絡操作相關的子線程 */ Runnable networkTask = new Runnable() { @Override public void run() { // TODO // 在這里進行 http request.網絡請求相關操作 PhalApiClient client = PhalApiClient.create() .withHost("http://demo.phalapi.net/"); PhalApiClientResponse response = client .withService("Default.Index") .withParams("username", "dogstar") .withTimeout(3000) .request(); String content = ""; content += "ret=" + response.getRet() + "\n"; if (response.getRet() == 200) { try { JSONObject data = new JSONObject(response.getData()); content += "data.title=" + data.getString("title") + "\n"; content += "data.content=" + data.getString("content") + "\n"; content += "data.version=" + data.getString("version") + "\n"; } catch (JSONException ex) { } } content += "msg=" + response.getMsg() + "\n"; Log.v("[PhalApiClientResponse]", content); Message msg = new Message(); Bundle data = new Bundle(); data.putString("value", content); msg.setData(data); handler.sendMessage(msg); } }; ``` 接著,實現線程回調的hander: ```javascript Handler handler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); Bundle data = msg.getData(); String val = data.getString("value"); Log.i("mylog", "請求結果為-->" + val); // TODO // UI界面的更新等相關操作 } }; ``` 最后,在我們需要的地方啟動: ```javascript View.OnClickListener mDummyBtnClickListener = new View.OnClickListener() { @Override public void onClick(View arg0) { // 開啟一個子線程,進行網絡操作,等待有返回結果,使用handler通知UI new Thread(networkTask).start(); // .... } }; ``` ### 再一次調用和異常請求 當我們需要再次使用同一個接口實例進行請求時,需要先進行重置,以便清空之前的接口參數,如: ```javascript //再一次請求 response = client.reset() //重置 .withService("User.GetBaseInfo") .withParams("user_id", "1") .request(); content = ""; content += "ret=" + response.getRet() + "\n"; if (response.getRet() == 200) { try { JSONObject data = new JSONObject(response.getData()); JSONObject info = new JSONObject(data.getString("info")); content += "data.info.id=" + info.getString("id") + "\n"; content += "data.info.name=" + info.getString("name") + "\n"; content += "data.info.from=" + info.getString("from") + "\n"; } catch (JSONException ex) { } } content += "msg=" + response.getMsg() + "\n"; Log.v("[PhalApiClientResponse]", content); ``` 異常情況下,即ret != 200時,將返回錯誤的信息,如: ```javascript //再來試一下異常的請求 response = client.reset() .withService("XXX.XXXX") .withParams("user_id", "1") .request(); content = ""; content += "ret=" + response.getRet() + "\n"; content += "msg=" + response.getMsg() + "\n"; Log.v("[PhalApiClientResponse]", content); ``` ## 6.2.3 運行效果 運行后,查詢log,可以看到: ![](http://7qnay5.com1.z0.glb.clouddn.com/QQ20151017154114.jpg) 可以注意到,在調試模式時,會有接口請求的鏈接和返回的結果日志,如: ``` 10-17 07:40:55.268: D/[PhalApiClient requestUrl](1376): http://demo.phalapi.net/?service=User.GetBaseInfo&user_id=1 10-17 07:40:55.364: D/[PhalApiClient apiResult](1376): {"ret":200,"data":{"code":0,"msg":"","info":{"id":"1","name":"dogstar","from":"oschina"}},"msg":""} ``` ## 6.2.4 擴展你的過濾器和結果解析器 ### (1)擴展過濾器 當服務端接口需要接口簽名驗證,或者接口參數加密傳送,或者壓縮傳送時,可以實現此過濾器,以便和服務端操持一致。 當需要擴展時,分兩步。首先,需要實現過濾器接口: ```javascript class MyFilter implements PhalApiClientFilter { public void filter(String service, Map<String, String> params) { //TODO ... } } ``` 然后設置過濾器: ```javascript PhalApiClientResponse response = PhalApiClient.create() .withHost("http://demo.phalapi.net/") .withFilter(new MyFilter()) // ... .request(); ``` ### (2)擴展結果解析器 當返回的接口結果不是JSON格式時,可以重新實現此接口。 當需要擴展時,同樣分兩步。類似過濾器擴展,這里不再贅述。 ## 6.2.5 特別注意:Android之NetworkOnMainThreadException異常 由于此SDK包是使用HttpURLConnection發起請求時,所以在主線程調用時會觸發NetworkOnMainThreadException異常,具體可參考: [Android之NetworkOnMainThreadException異常](http://blog.csdn.net/mad1989/article/details/25964495) 所以,需要使用子線程來發起請求,或者重新繼承改用異步的請求。
                  <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>

                              哎呀哎呀视频在线观看