您的位置:首页 > 移动开发 > Android开发

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

2017-02-13 14:30 447 查看

不会写后台的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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java Json Android