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

資訊專欄INFORMATION COLUMN

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

Harriet666 / 2708人閱讀

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

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

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

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

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

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

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

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

    //首先基于HttpUrlConnection實(shí)現(xiàn)一個(gè)Http工具類,該類實(shí)現(xiàn)了通過(guò)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();
        }
    }

接下來(lái)再Activity中調(diào)用剛才的HttpUtil實(shí)現(xiàn)數(shù)據(jù)交互:
(注意:這里的Gson是一個(gè)Google提供的Json和java對(duì)象之間相互轉(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) {

    }
});

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

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

這是在Express里設(shè)置路由接收剛才發(fā)送的Json數(shù)據(jù)和響應(yīng)Get請(qǐng)求的方法:
(注意要將該路由注冊(cè)在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)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/79224.html

相關(guān)文章

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

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

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

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

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

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

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

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

    Harpsichord1207 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<