资讯专栏INFORMATION COLUMN

Android与Node.js的http数据交互

Harriet666 / 2710人阅读

摘要:而利用传递数据无疑是网络数据交互里最简单,最便捷的方式。由于正在学习和,这里就先介绍和的框架编写的后台之间利用传递数据进行数据交互。

个人觉得网络数据交互对于任何技术来说都是最好玩的部分,不管是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" } ]

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/79224.html

相关文章

  • AndroidNode.jshttp数据交互

    摘要:而利用传递数据无疑是网络数据交互里最简单,最便捷的方式。由于正在学习和,这里就先介绍和的框架编写的后台之间利用传递数据进行数据交互。 个人觉得网络数据交互对于任何技术来说都是最好玩的部分,不管是web前端还是Android,因为我觉得当一个应用程序具有和互联网上的资源交互的功能时才真正可以开始做些好玩的事。而利用http传递Json数据无疑是网络数据交互里最简单,最便捷的方式。 由于正...

    xeblog 评论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条评论

Harriet666

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<