天天看点

Android客户端和Servlet服务器端通过JSON交互

????缁???濡?涓?锛?

1. android??servlet涔??寸???存?ヤ俊??浼???锛?涓???杩?json锛?

1.1 android绔?浠g??

1.2 servlet绔?浠g??

2. android??servlet涔??撮??杩?json杩?琛?浜や?

2.1 android绔?浠g??

2.2 servlet绔?浠g??

=============================================================

1. android??servlet涔??寸???存?ヤ俊??浼???

??ndroid绔???杩?httpclient?昏?块?????″???????request璇锋?锛?骞惰?峰??response??

??ervlet绔?????瑕?绠?????瀹?涔?doGet?规???doPost?规??冲????

1.1 android绔?浠g??

?

package com.example.helloworld;


public class MainActivity extends ActionBarActivity {

    private String responseMsg = "";
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
            
        Button button1 = (Button)findViewById(R.id.button1);
        button1.setOnClickListener(new OnClickListener() {
            
            @Override
            public void onClick(View arg0) {                
                Thread loginThread = new Thread(new LoginThread());
                loginThread.start();
            }
        });
        
    }
    
????//????璇锋???涓昏??规?
    private boolean loginServer(){
        boolean loginValidate = false;
        
??????????//servlet???″?ㄥ?板????
        String urlStr = "http://192.168.1.24:8080/servletTest/test";
        HttpPost request = new HttpPost(urlStr);
        
        try {
            HttpClient client = getHttpClient();
            //?ц?璇锋?
            HttpResponse response = client.execute(request);
?????????????? //response??servlet缁??虹??杩???缁???
            if(response.getStatusLine().getStatusCode() == 200){
                loginValidate = true;
                responseMsg = EntityUtils.toString(response.getEntity());
            }
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }
        return loginValidate;
    }
    
    public HttpClient getHttpClient(){
        BasicHttpParams httpParams = new BasicHttpParams();
        HttpConnectionParams.setConnectionTimeout(httpParams, 5*1000);
        HttpConnectionParams.setSoTimeout(httpParams, 10*1000);
        HttpClient client = new DefaultHttpClient(httpParams);
        return client;
    }
    
    class LoginThread implements Runnable{
        public void run(){    
????????????boolean loginValidate = loginServer();  
????????????System.out.println("======================bool is :"+loginValidate+"----------------response: "+responseMsg);
        }
    }
}      

1.2 servlet绔?浠g??

package cn.dragon.servlet;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

import javax.servlet.ServletException;
import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

import com.sun.corba.se.pept.transport.Connection;

public class ServletDemoFirst extends HttpServlet{
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
//        response.setContentType("text/html; charset=GB2312");
//        PrintWriter outPrintWriter = response.getWriter();
//        outPrintWriter.println("hello");
//        outPrintWriter.close();
        //Connection conn = null;
??????????//棣???寤虹???版??搴?杩???        String driver = "com.mysql.jdbc.Driver";
        String url = "jdbc:mysql://localhost:3306/test";
        String user = "root";
        String password = "admin";
        PrintWriter out = response.getWriter();
        //out.println("welcom");
        try {
            Class.forName(driver);
            java.sql.Connection conn = DriverManager.getConnection(url, user, password);
            //out.println("loading success");


            Statement statement = conn.createStatement();
??????????????//杩?琛??版??搴??ヨ????
            ResultSet rs = statement.executeQuery("select * from career");
            ArrayList<String> list1 = new ArrayList<String>();
            while(rs.next()){
                //out.println(rs.getString(1));
                list1.add(rs.getString(1));
            }
??????????????//out?ㄦ?ュ??瀹㈡?风??杩????版????濡????ㄧ?椤佃?块??杩?涓?缃???锛??ヨ?㈡?版??搴???缁???灏辨?剧ず?ㄧ?椤典?锛?濡?????ndroid璁块??锛?灏辫???缁?android????            out.println(list1.toString());
            rs.close();
            statement.close();
            conn.close();
        } catch (ClassNotFoundException cnfex) {
            //System.err.println("瑁?杞?JDBC/ODBC 椹卞?ㄧ?搴?澶辫触??");
            out.println("loading JDBC failed");
            cnfex.printStackTrace();
            System.exit(1); // terminate program
        } catch (SQLException sqlex) {
            //System.err.println("??娉?杩??ユ?版??搴?");
            out.println("can not connect to the database");
            sqlex.printStackTrace();
            System.exit(1); // terminate program
        }
        
    }
    
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
???????? doGet(request, response);    
    }

}      

?浠ヤ?灏辨??涓ら?ㄥ????浠g?????芥??杈?濂界??瑙o???涓?涔?缁?浜?涓?浜?娉ㄩ????

==================================================================

2. ??杩?JSON杩?琛?瀹㈡?风?????″?ㄧ????璁?

2.1 android绔?

package com.example.helloworld;


public class MainActivity extends ActionBarActivity {

    private String responseMsg = "";
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
            
        Button button1 = (Button)findViewById(R.id.button1);
        button1.setOnClickListener(new OnClickListener() {
            
            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                //Intent intent = new Intent(MainActivity.this, InfoActivity.class);
                //startActivity(intent);
                Thread loginThread = new Thread(new LoginThread());
                loginThread.start();
            }
        });
        
    }
   
    public HttpClient getHttpClient(){
        BasicHttpParams httpParams = new BasicHttpParams();
        HttpConnectionParams.setConnectionTimeout(httpParams, 5*1000);
        HttpConnectionParams.setSoTimeout(httpParams, 10*1000);
        HttpClient client = new DefaultHttpClient(httpParams);
        return client;
    }
    
    private void sendJson(){
        //boolean loginValidate = false;
        String urlStr = "http://192.168.1.24:8080/servletTest/test";
        HttpPost post = new HttpPost(urlStr);
        try{
            //?????″?ㄥ??json
            JSONObject json1 = new JSONObject();
            //Object email = null;
            Object email = "hlelo";
            json1.put("email", email);
            //Object pwd = null;
            Object pwd = "wodls";
            json1.put("password", pwd);
            
            System.out.println("=============="+json.toString());
            //淇?璇?json?版??涓???涔辩??
            StringEntity se = new StringEntity(json.toString());
            se.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
            post.setEntity(se);
            
            //????json缁????″??            HttpClient httpClient = getHttpClient();
            HttpResponse httpResponse = httpClient.execute(post);
            
            /*int httpCode = httpResponse.getStatusLine().getStatusCode();
            if(httpCode == HttpURLConnection.HTTP_OK && httpResponse != null){
                //org.apache.http.Header[] headers = httpResponse.getAllHeaders();
                HttpEntity entity = httpResponse.getEntity();
                //org.apache.http.Header header = httpResponse.getFirstHeader("content-type");
                //璇诲?????″?ㄨ?????json
                InputStream inputStream = entity.getContent();
                InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
                BufferedReader reader = new BufferedReader(inputStreamReader);
                String s;
                while((s= reader.readLine())!= null){
                    result.append(s);
                }
                reader.close();
                
                JSONObject jsonObject = new JSONObject(result.toString());
                String nameString = jsonObject.getString("email");
                String passString = jsonObject.getString("password");
                System.out.println("===============email is: "+nameString+", password is: "+passString);*/
        }catch(Exception exception){
            exception.printStackTrace();
        }
    }
    
    class LoginThread implements Runnable{
        public void run(){           
            sendJson();
        }
    }    
 }      

2.2 servlet绔?浠g??

package cn.dragon.servlet;


public class ServletDemoFirst extends HttpServlet{
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
        doPost(request, response);
    }
    
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
        //澶???json??瀹?        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/json");
        String acceptjson = "";
        try {
            BufferedReader br = new BufferedReader(new InputStreamReader((ServletInputStream)request.getInputStream(), "utf-8"));
            StringBuffer sb = new StringBuffer("");
            String temp;
            while((temp = br.readLine()) != null){
                sb.append(temp);
            }
            br.close();                     
????????????  //浠ヤ???杩?绋??戒?request涓?璇诲??json锛?骞跺?json杞??㈡??string锛?杩??峰??浠ユ?剧ず?烘?ャ????缁?String绫诲????json灏辨??acceptjson????
            acceptjson = sb.toString();
            System.out.println("=======json is==========="+acceptjson);
            if(acceptjson != ""){
                //System.out.println("get the json successfully");
                JSONObject jo = JSONObject.fromObject(acceptjson);
????????????????????//email?虫??android绔?????杩??ョ??json褰?涓???涓?涓?key锛???浠?浣跨??et?规?璇诲??瀵瑰???value
                System.out.println(jo.get("email"));
            }
            else{
                System.out.println("get the json failed");
            }
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }
    }

}      

?跺??搴?璇ヨ???涓?娈靛??瀹规??servlet灏?json杩?杩?缁?android绔?锛??跺??android绔???瑙f???烘?ャ???充?android绔???瑙f??杩?绋??ㄦ敞???????ㄥ??涓?锛?浣?杩?娈靛??瀹规??杩?娌℃??楠?璇???

涓??㈢?寰?琛ュ??涓??瑰?充?JSONArray????瀹光????JSONArray濡?浣?浼?杈?涓?瑙f??

/**** android: sendJson()      *****/
private void sendJson(){
        //boolean loginValidate = false;
        StringBuilder result = new StringBuilder();
        String urlStr = "http://192.168.1.24:8080/servletTest/test";
        HttpPost post = new HttpPost(urlStr);
        List<NameValuePair> params = new ArrayList<NameValuePair>();
        //params.add(new BasicNameValuePair("name", "this is post"));
        try{
            //?????″?ㄥ??json
            JSONObject json1 = new JSONObject();
            //Object email = null;
            Object email = "hlelo";
            json1.put("email", email);
            //Object pwd = null;
            Object pwd = "wodls";
            json1.put("password", pwd);
            
            JSONArray jsonArray = new JSONArray();
?????????????? //????涓?涓?JSONARRAY骞跺?涓??㈢??json瑁??ュ?朵腑
            jsonArray.put(0, json1);
            JSONObject json = new JSONObject();
?????????????? //??????涓?涓?JSONObject锛?灏???????JSONArray?惧?ュ?朵腑锛????????版???″?ㄧ????
            json.put("dao", jsonArray);
            System.out.println("=============="+json.toString());
            
            //淇?璇?json?版??涓???涔辩??
            StringEntity se = new StringEntity(json.toString());
            se.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
            post.setEntity(se);
            
            //????json缁????″??            HttpClient httpClient = getHttpClient();
            HttpResponse httpResponse = httpClient.execute(post);
            
            
        }catch(Exception exception){
            exception.printStackTrace();
        }          
/***** servlet: doPost()  *****/
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{//澶???json??瀹?        System.out.println("=======json is===========");
        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/json");
        String acceptjson = "";
        try {
            BufferedReader br = new BufferedReader(new InputStreamReader((ServletInputStream)request.getInputStream(), "utf-8"));
            StringBuffer sb = new StringBuffer("");
            String temp;
            while((temp = br.readLine()) != null){
                sb.append(temp);
            }
            br.close();
            acceptjson = sb.toString();
            System.out.println("=======json is==========="+acceptjson);
            if(acceptjson != ""){
                //System.out.println("get the json successfully");
????????????????????//???峰??json

                JSONObject jo = JSONObject.fromObject(acceptjson);
                //???峰??json涓???????jsonarry锛?dao??????android绔?缁??虹??key
                JSONArray ja = jo.getJSONArray("dao");
????????????????????//寰????峰??jsonarray涓???姣?涓?json
                for(int i = 0; i < ja.size(); i++){
                    JSONObject object = JSONObject.fromObject(ja.get(i));
???????????????????????? //?峰??json涓???email?硷?email??json涓???key

                    System.out.println("email is: "+object.get("email"));
                }
            }
            else{
                System.out.println("get the json failed");
            }
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }
    }      

?

?

?

?

?

?

?

?

?

?

Bon Appetite~

杞?杞戒?:https://www.cnblogs.com/zhawj159753/p/3949956.html