成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

Android與Node.js的http數(shù)據(jù)交互

xeblog / 1603人閱讀

摘要:而利用傳遞數(shù)據(jù)無疑是網(wǎng)絡(luò)數(shù)據(jù)交互里最簡單,最便捷的方式。由于正在學(xué)習(xí)和,這里就先介紹和的框架編寫的后臺(tái)之間利用傳遞數(shù)據(jù)進(jìn)行數(shù)據(jù)交互。

個(gè)人覺得網(wǎng)絡(luò)數(shù)據(jù)交互對于任何技術(shù)來說都是最好玩的部分,不管是web前端還是Android,因?yàn)槲矣X得當(dāng)一個(gè)應(yīng)用程序具有和互聯(lián)網(wǎng)上的資源交互的功能時(shí)才真正可以開始做些好玩的事。
而利用http傳遞Json數(shù)據(jù)無疑是網(wǎng)絡(luò)數(shù)據(jù)交互里最簡單,最便捷的方式。

由于正在學(xué)習(xí)Node.js和Android,這里就先介紹Android和Node.js的Express框架編寫的后臺(tái)之間利用http傳遞Json數(shù)據(jù)進(jìn)行數(shù)據(jù)交互。

Android里怎樣利用Http發(fā)送數(shù)據(jù)

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

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

這里就用原生的HttpUrlConnection實(shí)現(xiàn)一個(gè)簡單的Http請求:

首先基于HttpUrlConnection實(shí)現(xiàn)一個(gè)Http工具類,該類實(shí)現(xiàn)了通過Http的Get和Post方式獲取和發(fā)送Json數(shù)據(jù)的方法:
(注意:這里的HttpCallbackListener是一個(gè)自定義的用來將請求成功/失敗的回調(diào)控制權(quán)轉(zhuǎn)移的接口)

    //首先基于HttpUrlConnection實(shí)現(xiàn)一個(gè)Http工具類,該類實(shí)現(xiàn)了通過Http的Get和Post方式獲取和發(fā)送Json數(shù)據(jù)的方法
    
    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中調(diào)用剛才的HttpUtil實(shí)現(xiàn)數(shù)據(jù)交互:
(注意:這里的Gson是一個(gè)Google提供的Json和java對象之間相互轉(zhuǎn)化的工具)

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) {

    }
});

這里沒有寫請求完成后的響應(yīng)事件,如果要寫關(guān)于界面的改動(dòng)的話要通過Handler將Message發(fā)送回主線程。

怎樣在Express里獲取剛才的數(shù)據(jù)

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

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

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

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/65785.html

相關(guān)文章

  • AndroidNode.jshttp數(shù)據(jù)交互

    摘要:而利用傳遞數(shù)據(jù)無疑是網(wǎng)絡(luò)數(shù)據(jù)交互里最簡單,最便捷的方式。由于正在學(xué)習(xí)和,這里就先介紹和的框架編寫的后臺(tái)之間利用傳遞數(shù)據(jù)進(jìn)行數(shù)據(jù)交互。 個(gè)人覺得網(wǎng)絡(luò)數(shù)據(jù)交互對于任何技術(shù)來說都是最好玩的部分,不管是web前端還是Android,因?yàn)槲矣X得當(dāng)一個(gè)應(yīng)用程序具有和互聯(lián)網(wǎng)上的資源交互的功能時(shí)才真正可以開始做些好玩的事。而利用http傳遞Json數(shù)據(jù)無疑是網(wǎng)絡(luò)數(shù)據(jù)交互里最簡單,最便捷的方式。 由于正...

    Harriet666 評論0 收藏0
  • JavaScript 就要統(tǒng)治世界了?

    摘要:歡迎使用中文文檔架構(gòu)概覽是網(wǎng)易項(xiàng)目團(tuán)隊(duì)開發(fā)的一個(gè)基于進(jìn)行開發(fā)的應(yīng)用層框架,提供了一個(gè)輕量級(jí)的容器來編寫簡單可維護(hù)的。 JavaScript 可以……嘛,不就是操作一下 DOM,可以讓元素飛來飛去嗎JavaScript 是……不就是用 jQuery 讓網(wǎng)頁動(dòng)起來,頂多就是再用用 Ajax 和后端進(jìn)行一下數(shù)據(jù)交換嗎JavaScript 是一門……最討厭和鄙視這種弱類型不需要編譯的腳本語言...

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

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

    Barry_Ng 評論0 收藏0
  • 2019,開發(fā)者應(yīng)該學(xué)習(xí)16個(gè)JavaScript框架

    摘要:它不僅從前端移動(dòng)到后端,我們也開始看到它用于機(jī)器學(xué)習(xí)和增強(qiáng)現(xiàn)實(shí),簡稱。由于其高使用率,年的現(xiàn)狀調(diào)查將其稱為采用的安全技術(shù)。機(jī)器學(xué)習(xí)框架在年的開發(fā)者峰會(huì)上,宣布了他們的機(jī)器學(xué)習(xí)框架的實(shí)現(xiàn),稱為。更高級(jí)別的用于在之上構(gòu)建機(jī)器學(xué)習(xí)模型。 2019,開發(fā)者應(yīng)該學(xué)習(xí)的16個(gè)JavaScript框架 showImg(https://segmentfault.com/img/remote/14600...

    Harpsichord1207 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<