学习json post请求和json解析

本文介绍了一种使用Java实现的POST请求方法,并详细展示了如何构造HTTP请求、发送JSON数据及解析服务器返回的JSON响应。此外,还提供了一个具体的JSON解析示例,用于将JSON数组转换为Java对象列表。

post请求

/** 

     * 发送HttpPost请求 
     *  
     * @param strURL 
     *            服务地址 
     * @param params 
     *            json字符串,例如: "{ \"id\":\"12345\" }" ;其中属性名必须带双引号<br/> 
     * @return 成功:返回json字符串<br/> 
     */  
    public static String post(String strURL, String params) {  
        System.out.println(strURL);  
        System.out.println(params);  
        try {  
            URL url = new URL(strURL);// 创建连接  
            HttpURLConnection connection = (HttpURLConnection) url  
                    .openConnection();  
            connection.setDoOutput(true);  
            connection.setDoInput(true);  
            connection.setUseCaches(false);  
            connection.setInstanceFollowRedirects(true);  
            connection.setRequestMethod("POST"); // 设置请求方式  
            connection.setRequestProperty("Accept", "application/json"); // 设置接收数据的格式  
            connection.setRequestProperty("Content-Type", "application/json"); // 设置发送数据的格式  
            connection.connect();  
            OutputStreamWriter out = new OutputStreamWriter(  
                    connection.getOutputStream(), "UTF-8"); // utf-8编码  
            out.append(params);  
            out.flush();  
            out.close();  
            // 读取响应  
            int length = (int) connection.getContentLength();// 获取长度  
            InputStream is = connection.getInputStream();  
            if (length != -1) {  
                byte[] data = new byte[length];  
                byte[] temp = new byte[512];  
                int readLen = 0;  
                int destPos = 0;  
                while ((readLen = is.read(temp)) > 0) {  
                    System.arraycopy(temp, 0, data, destPos, readLen);  
                    destPos += readLen;  
                }  
                String result = new String(data, "UTF-8"); // utf-8编码  
                System.out.println(result);  
                return result;  
            }  
        } catch (IOException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        }  
        return "error"; // 自定义错误信息  

    }  


json解析(不通用根据实际情况修改)

 public  ArrayList<Tab_Activity> jsonToArray(String jsonStr){
    JSONObject dataJson;
    Tab_Activity mTab_Activity = null;
    ArrayList<Tab_Activity> mActivityList = new ArrayList<Tab_Activity>();
try {
dataJson = new JSONObject(jsonStr);
// JSONObject  response = dataJson.getJSONObject("Output");
// 获得数组个数
int count = dataJson.getInt("count");
Log.i("tjj", "count = "+count);
JSONArray data = dataJson.getJSONArray("Activities");
Log.i("tjj", "data = "+data.length());
// 循环创建json对象
JSONObject[] info = new JSONObject[count];
for(int i = 0; i < count; i++){
info[i] = data.getJSONObject(i);
Log.i("tjj", "info["+i+"] = "+info[i].length());
// 将获得的信息记录
mTab_Activity = new Tab_Activity();

mTab_Activity.setId(info[i].getInt("id"));
Log.d("tjj", mTab_Activity.getId()+"");
mTab_Activity.setImage_url(info[i].getString("imageUrl"));
Log.d("tjj", mTab_Activity.getImage_url());
mTab_Activity.setAction(info[i].getString("action"));
Log.d("tjj", mTab_Activity.getAction());
mTab_Activity.setAct_des(info[i].getString("actDes"));
Log.d("tjj", mTab_Activity.getAct_des());
mTab_Activity.setAct_number(info[i].getInt("actNumber"));
Log.d("tjj", mTab_Activity.getAct_number()+"");
mTab_Activity.setAct_type(info[i].getInt("actType"));
Log.d("tjj", mTab_Activity.getAct_type()+"");

// mTab_Activity.setAct_start_time(null);
// mTab_Activity.setAct_end_time(info[i].ge);

mActivityList.add(mTab_Activity);
}
return mActivityList;
// String actCode=info[0].getString("province");
// String city=info[0].getString("city");
// String district=info[0].getString("district");
// String address=info[0].getString("address");

} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值