以自己的电脑作为服务器,Android端通过JSON来传递数据到后台

本文介绍如何在Android应用中调用JavaWeb提供的JSON数据服务,包括Java后台项目的搭建、fastjson库的使用、Servlet配置及Android端的数据读取实现。

不会写后台的Android程序猿不是好程序猿!!!!

JAVA后台

一、新建JavaWeb项目

       File->New->Other->Dynamic Web Project

二、导入 fastjson  jar包,下载位置:http://download.csdn.net/detail/lrici/9753344

三、1、新建User类

package com.cc.json;

import java.util.Date;

import org.omg.CosNaming.NamingContextExtPackage.StringNameHelper;

public class User {

	private String name;
	private Date birthday;
	private String password;
	private Integer age;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Date getBirthday() {
		return birthday;
	}
	public void setBirthday(Date birthday) {
		this.birthday = birthday;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
	
}

2、新建ServletJson类

package com.cc.json;

import java.io.IOException;  
import java.io.OutputStream;  
import java.util.Date;  
  
import javax.servlet.ServletException;  
import javax.servlet.http.HttpServlet;  
import javax.servlet.http.HttpServletRequest;  
import javax.servlet.http.HttpServletResponse;

import com.alibaba.fastjson.JSON;

public class ServletJson extends HttpServlet{

	  private User buildUserDO(){  
	        User user = new User();  
	        user.setName("王二麻子");  
	        user.setPassword("sdgsgd");  
	        user.setAge(11);  
	        user.setBirthday(new Date());  
	          
	        return user;  
	    }  
	    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
	        response.setContentType("application/json; charset=utf-8");  
	        response.setCharacterEncoding("UTF-8");  
	  
	        String userJson = JSON.toJSONString(buildUserDO());  
	        OutputStream out = response.getOutputStream();  
	        out.write(userJson.getBytes("UTF-8"));  
	        out.flush();  
	    }  
	  
	    
	    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
	    }  
}

四、在web.xml中添加映射

  <servlet-name>HelloJson</servlet-name>
<servlet-class>com.cc.json.ServletJson</servlet-class>
  </servlet>
  <servlet-mapping>
  <servlet-name>HelloJson</servlet-name>
  <url-pattern>/HelloJson</url-pattern>
  </servlet-mapping>

五、Run As->Run on Server

在浏览器输入http://localhost:8080/HelloJson/ServletJson

执行结果


源码下载http://download.csdn.net/detail/lrici/9753347


Android端

一、在AndroidStudio中新建项目

二、编辑activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:context="cool.example.administrator.connectnetwork.MainActivity">
<Button
    android:id="@+id/button1"
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:text="读取数据"
    />


</android.support.design.widget.CoordinatorLayout>

三、编辑MainActivity.java文件

package cool.example.administrator.connectnetwork;

import android.os.AsyncTask;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.concurrent.SynchronousQueue;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        findViewById(R.id.button1).setOnClickListener(new View.OnClickListener(

        ) {
            @Override
            public void onClick(View v) {
                new AsyncTask<String, Void, Void>() {
                    @Override
                    protected Void doInBackground(String... params) {
                        try {
                            URL url=new URL(params[0]);
                           URLConnection urlConnection= url.openConnection();
                            //inputstrewam来接收返回值
                           InputStream inputStream= urlConnection.getInputStream();
                            //把inputStream封装成eInputStreamReader,是一个从字节到字符的转换
                            InputStreamReader inputStreamReader=new InputStreamReader(inputStream,"UTF-8");
                            //创建一个bufferReader,通过BufferReader直接读取一行字符串
                            BufferedReader bufferedReader=new BufferedReader(inputStreamReader);
                            String line;//用于临时记录读取到的一行字符串
                            while((line= bufferedReader.readLine())!=null){
                                System.out.println(line);
                            }
                            bufferedReader.close();
                            inputStreamReader.close();
                            inputStream.close();


                        } catch (MalformedURLException e) {
                            e.printStackTrace();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                        return null;
                    }
                }.execute("http://10.11.177.245:8080/HelloJson/ServletJson");
            }
        });


    }


}
注意:10.11.177.245是本机的IP地址!!!即Java后台运行时在浏览器中输入的localhost

四、在AndroidManifest.xml中添加网络连接的权限

<uses-permission android:name="android.permission.INTERNET"/>
五、运行安装程序,点击读取数据

运行结果


注意:测试的时候需要使用Android虚拟机来安装Apk文件,使用真机测试不通过,使用真机测试方法http://blog.csdn.net/lrici/article/details/55098876

源码地址:http://download.csdn.net/detail/lrici/9754119



评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值