国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Android與Node.js的http數據交互

xeblog / 1557人閱讀

摘要:而利用傳遞數據無疑是網絡數據交互里最簡單,最便捷的方式。由于正在學習和,這里就先介紹和的框架編寫的后臺之間利用傳遞數據進行數據交互。

個人覺得網絡數據交互對于任何技術來說都是最好玩的部分,不管是web前端還是Android,因為我覺得當一個應用程序具有和互聯網上的資源交互的功能時才真正可以開始做些好玩的事。
而利用http傳遞Json數據無疑是網絡數據交互里最簡單,最便捷的方式。

由于正在學習Node.js和Android,這里就先介紹Android和Node.js的Express框架編寫的后臺之間利用http傳遞Json數據進行數據交互。

Android里怎樣利用Http發送數據

Android里發送Http請求的方式有HttpUrlConnection和HttpClient兩種。

HttpUrlConnection在java.net包下,是java原生支持的類,而HttpClient是apache提供的第三方類庫,是對HttpUrlConnection的進一步封裝,由于性能等原因,Google已不推薦在Android中使用。

這里就用原生的HttpUrlConnection實現一個簡單的Http請求:

首先基于HttpUrlConnection實現一個Http工具類,該類實現了通過Http的Get和Post方式獲取和發送Json數據的方法:
(注意:這里的HttpCallbackListener是一個自定義的用來將請求成功/失敗的回調控制權轉移的接口)

    //首先基于HttpUrlConnection實現一個Http工具類,該類實現了通過Http的Get和Post方式獲取和發送Json數據的方法
    
    public class HttpUtil {
    
        public static void sendGetHttpRequest(final String address, final HttpCallbackListener listener) {
            new Thread(new Runnable() {
                @Override
                public void run() {
                    HttpURLConnection connection = null;
    
                    URL url = null;
                    try {
                        url = new URL(address);
    
                        connection = (HttpURLConnection) url.openConnection();
                        connection.setRequestMethod("GET");
                        connection.setConnectTimeout(8000);
                        connection.setReadTimeout(8000);
                        InputStream inputStream = connection.getInputStream();
                        BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
                        StringBuffer response = new StringBuffer();
                        String line;
                        while ((line = reader.readLine()) != null) {
                            response.append(line);
                        }
                        if (listener != null) {
                            listener.onFinish(response.toString());
                        }
                    } catch (Exception e) {
                        listener.onError(e);
                    }
                }
            }).start();
        }
    
        public static void sendPostHttpRequest(final String address,final String jsonBody,final HttpCallbackListener listener){
            new Thread(new Runnable() {
                @Override
                public void run() {
                    HttpURLConnection connection=null;
                    URL url=null;
    
                    try {
                        url = new URL(address);
    
                        connection = (HttpURLConnection) url.openConnection();
                        connection.setRequestMethod("POST");
                        connection.setConnectTimeout(8000);
                        connection.setReadTimeout(8000);
                        connection.setRequestProperty("Content-Type","application/json");
    
                        OutputStream outputStream=connection.getOutputStream();
    
                        BufferedWriter requestBody=new BufferedWriter(new OutputStreamWriter(outputStream));
    
                        requestBody.write(jsonBody);
    
                        requestBody.flush();
    
                        requestBody.close();
    
                        InputStream inputStream = connection.getInputStream();
                        BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
                        StringBuffer response = new StringBuffer();
                        String line;
                        while ((line = reader.readLine()) != null) {
                            response.append(line);
                        }
                        if (listener != null) {
                            listener.onFinish(response.toString());
                        }
    
                    } catch (Exception e) {
                        listener.onError(e);
                    }
                }
            }).start();
        }
    }

接下來再Activity中調用剛才的HttpUtil實現數據交互:
(注意:這里的Gson是一個Google提供的Json和java對象之間相互轉化的工具)

List manList=new ArrayList();
Man man=new Man();
man.setName("post");
man.setAge(20);
manList.add(man);
manList.add(man);
Gson gson=new Gson();
String mansjson=gson.toJson(manList);
HttpUtil.sendPostHttpRequest("http://192.168.0.100:3000/qzone/ad", mansjson, new HttpCallbackListener() {
    @Override
    public void onFinish(String response) {
    }

    @Override
    public void onError(Exception e) {

    }
});

這里沒有寫請求完成后的響應事件,如果要寫關于界面的改動的話要通過Handler將Message發送回主線程。

怎樣在Express里獲取剛才的數據

這是在Express里設置路由接收剛才發送的Json數據和響應Get請求的方法:
(注意要將該路由注冊在app.js中)

    router.post("/ad/",function(req,res,next){
        for (var i=0;i

如果在路由里console.log(req.body);
可以看到如下數據:
[ { age: 20, name: "post" }, { age: 20, name: "post" } ]

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/65785.html

相關文章

  • AndroidNode.jshttp數據交互

    摘要:而利用傳遞數據無疑是網絡數據交互里最簡單,最便捷的方式。由于正在學習和,這里就先介紹和的框架編寫的后臺之間利用傳遞數據進行數據交互。 個人覺得網絡數據交互對于任何技術來說都是最好玩的部分,不管是web前端還是Android,因為我覺得當一個應用程序具有和互聯網上的資源交互的功能時才真正可以開始做些好玩的事。而利用http傳遞Json數據無疑是網絡數據交互里最簡單,最便捷的方式。 由于正...

    Harriet666 評論0 收藏0
  • JavaScript 就要統治世界了?

    摘要:歡迎使用中文文檔架構概覽是網易項目團隊開發的一個基于進行開發的應用層框架,提供了一個輕量級的容器來編寫簡單可維護的。 JavaScript 可以……嘛,不就是操作一下 DOM,可以讓元素飛來飛去嗎JavaScript 是……不就是用 jQuery 讓網頁動起來,頂多就是再用用 Ajax 和后端進行一下數據交換嗎JavaScript 是一門……最討厭和鄙視這種弱類型不需要編譯的腳本語言...

    AbnerMing 評論0 收藏0
  • 前端每周清單半年盤點之 React ReactNative 篇

    摘要:前端每周清單半年盤點之與篇前端每周清單專注前端領域內容,以對外文資料的搜集為主,幫助開發者了解一周前端熱點分為新聞熱點開發教程工程實踐深度閱讀開源項目巔峰人生等欄目。與求同存異近日,宣布將的構建工具由遷移到,引發了很多開發者的討論。 前端每周清單半年盤點之 React 與 ReactNative 篇 前端每周清單專注前端領域內容,以對外文資料的搜集為主,幫助開發者了解一周前端熱點;分為...

    Barry_Ng 評論0 收藏0
  • 2019,開發者應該學習16個JavaScript框架

    摘要:它不僅從前端移動到后端,我們也開始看到它用于機器學習和增強現實,簡稱。由于其高使用率,年的現狀調查將其稱為采用的安全技術。機器學習框架在年的開發者峰會上,宣布了他們的機器學習框架的實現,稱為。更高級別的用于在之上構建機器學習模型。 2019,開發者應該學習的16個JavaScript框架 showImg(https://segmentfault.com/img/remote/14600...

    Harpsichord1207 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<