项目ITP(四) javaweb http json 交互 in action (服务端 spring 手机端 提供各种工具类)勿喷!(一)

2014-11-23 21:55:29 · 作者: · 浏览: 0

前言

  系列文章:[传送门]

  洗了个澡,准备写篇博客。然后看书了。时间 3 7 分。我慢慢规律生活,向目标靠近。

          \

           很喜欢珍惜时间像叮当猫一样< http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+1f3OxCA8L3A+CjxwPqGhoaHC/cL9tdijrLb+zqzC68q1z9bHqbW9vavSqsLkxLvBy6Gjz8LGqs7E1cKz9rb+zqzC68q1z9bHqbW9PC9wPgo8cD6hoaGh1eK0zjwvcD4KPHA+oaGhoaGhoaHO0sPHyrXP1jxzdHJvbmc+IGphdmF3ZWIgaHR0cCBqc29uIL27u6UgaW4gYWN0aW9uPC9zdHJvbmc+PC9wPgo8cD6hoaGhzOLEv7rcs6SjrLWrztLP68jDxOPDx7+0z8KjrLj4ztK149LivPuhozwvcD4KPHA+IDwvcD4KPHA+v6rKvLDJIDwvcD4KPGgxPgrKtdW9IDwvaDE+CjxwPqGhoaGxvrTO0tS+rbXktcS1x8K81/fOqrC4wP2ho7XHwrzX9rXEusPSssrHvq215KGjILf+zvG2yyC6zSBhcHC2y6Ost/7O8bbLvPLC1KOsYXBwtsvP6s+4venJ3C4uLjwvcD4KPGgxPgq3/s7xtss8L2gxPgo8aDM+CqGhoaHXysHPo7qhoTwvaDM+CjxwPqGhoaGhtnNwcmluZ6G3oaE8L3A+CjxwPqGhPHN0cm9uZz5AUmVzcG9uc2VCb2R5PC9zdHJvbmc+IDwvcD4KPHA+oaGhoaGhoaG9q8TayN278rbUz/PX986qIEhUVFAgz+zTptX9zsS3tbvYo6yyorX308PKyrrPSHR0cE1lc3NhZ2VDb252ZXJ0ZXK1xEFkYXB0ZXLXqru7ttTP86Os0LTI68rks/bB96GjPC9wPgo8dWw+CjxsaT5HRVTEo8q9z8KjrNXiwO/KudPDwctAUGF0aFZhcmlhYmxlsPO2qMrkyOuyzsr9o6y3x7Ojysq6z1Jlc3RmdWy35yYjMjY2ODQ7oaPS8s6q0v6y2MHLss7K/dPrwre+trXEudjPtaOsv8nS1Mzhyf3N+NW+tcSwssir0NSjrL6yzKy7r9Kzw+ajrL21tc228dLiuaW797fnz9WhozxsaT5QT1NUxKPKvc/Co6zKudPDQFJlcXVlc3RCb2R5sPO2qMfrx/O21M/zo6xTcHJpbme74bDvxOO9+NDQ0K3S6dequ7ujrL2rSnNvbqGiWG1s0K3S6dequ7uzycTj0OjSqrXEttTP86GjPGxpPkBSZXNwb25zZUJvZHm/ydLUserXosjOus621M/zo6zTyVNycGluZ83qs8m21M/zoaqhqtCt0um1xNequ7uhowo8cD4gPC9wPgo8cD60+sLrwP3X06O6oaGhoTwvcD4KCjxpbWcgc3JjPQ=="https://www.cppentry.com/upload_files/article/76/1_0x2ey__.gif" alt="复制代码">

@RequestMapping(value = "/login")
    public @ResponseBody Results login(@PathVariable String username, @PathVariable String  password) throws IOException 
    {
        System.out.println("userName:"+username);
        System.out.println("password:"+password);
        
        Results result = new Results();

        int resultState = userLoginService.checkUserLoginByPhone(username,password);
        if(resultState == 1)
        {
            result.setResults(1);
            System.out.println("... phone success!!");
        }
        else if(resultState == 0)
        {
            result.setResults(0);
            System.out.println("... phone fail!!");
        }
        return result;
    }
复制代码

Results 类很简单
\ View Code

手机端

  资料 :

    1.android + java

    2.http

    3.json

  结构:

   \

①itp包下,是程序的主入口,界面很简单。

\ View Code

#LoginAsyncTask 里面是程序的重要部汾 http://www.2cto.com/kf/yidong/wp/" target="_blank" class="keylink">WPC9wPgo8cD4gPC9wPgo8cD7E47vhv7S1vaO6PC9wPgo8cD6hoaGhoaGhoTxpbWcgc3JjPQ=="https://www.cppentry.com/upload_files/article/76/1_p9bnq__.png" alt="\">

②webservice 工具类 (★★★)

HttpClient.java

复制代码
package sedion.wq.itp.webservice;

import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.Nameva luePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.conn.ConnectTimeoutException;
import org.apache.http.entity.mime.MultipartEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.CoreConnectionPNames;
import org.apache.http.params.HttpParams;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;
import org.json.JSONException;
import org.json.JSONObject;
import android.util.Log;

public class HttpClient 
{
    
    /**连接超时**/
    private static final String TIME_OUT = "{\"results\":-2}";
    
    /** User-Agent 用户识别 **/
    private static final String User_Agent = "...";

    /**
     * 使用post请求获取数据
     * @param uriAPI 网址
     * @param params 请求参数
     * @return
     * @throws JSONException 
     */
    private static JSONObject post(String uriAPI, List
  
    params)
    {
        org.apache.http.client.HttpClient httpClient = new DefaultHttpClient();
        JSONObject result = null;
        
        try 
        {
            // 使用post方式
            HttpPost httpRequest = new HttpPost(uriAPI);
            
            if (params !=null && params.size()>0) 
            {
                //设置请求参数和编码格式
                httpRequest.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));
            }
            
            //设置请求用户识别
            //httpRequest.addHeader("User-Agent", User_Agent);
            //设置请求超时时间为5s
            httpRequest.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT,5000);
            //读取超时时间
            httpRequest.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, 5000);
            
            //发送请求并获取响应
            HttpResponse httpResponse = httpClient.execute(httpRequest);
            
            
            //根据不同的请求结果代码进行处理数据
            if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) 
            {
                //判断请求成功并返回数据
                //解析返回的结果,将返回的信息整成字符串
                String strResult = EntityUtils.toString(httpResponse.getEntity());
                //转化成json对象,便于操作,json对象是类似于hashmap
                result = new JSONObject(strResult);
                
                System.out.println("JSONObject -> result:"+result);
                
                //如果返回的数据时空
                if (result.optString("results").equals("null")) 
                {
                    result = null;                            
                }
                
            }
            else
            {
                //请求失败
                Log.e("请求失败", String.valueOf(httpResponse.getStatusLine().getStatusCode()));
                result = null;
            }
        }
        catch(ConnectTimeoutException cException)
        {
            try 
            {
                result = new JSONObject(TIME_OUT);
            } 
            catch (Exception e) 
            {
                Log.e("webservice json 转化错误", e.toString());
            }
        }
        catch (Exception e)
        {
            Log.e("post Error", e.toString());
            e.printStackTrace();
            result = null;
        }
        finally
        {
            try 
            {
                httpClient.getConnectionManager().shutdown();
            } 
            catch (Exception e2)
            {
                Log.e("关闭连接失败", e2.toString());
            }
        }
        return result;
    }
    
    /**
     * 使用post请求获取数据
     * @param uriAPI 网址
     * @param params 请求参数
     * @return
     */
    public static JSONObject post(String uri, String method, List
   
     params) { return post(uri + method, params); } /** * 使用get请求获取数据 * @param uriAPI 网址 * @ret