Android 之 网络访问服务器,解析JSON数据

提示:在访问网络,或者服务器的数据一定要注意网络权限的声明:

<uses-permission android:name="android.permission.INTERNET"/>
package com.sun.parsejsondata;

import java.io.IOException;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.test.AndroidTestCase;
import android.util.Log;

/*{
    "index_num":"121286",
    "total":300,
    "result_num":10,
    "web_url":"http://www.aibang.com",
    "wap_url":"http://wap.aibang.com",
    "bizs":{
        "biz":[{
            "id":"19180584-418982077",
            "name":"北京饭店",
            "addr":"东城区东长安街号(近王府井大街)",
            "tel":"4006778919-1011",
            "cate":"宾馆酒店;美食;其他美食;五星级酒店;婚宴酒店;结婚",
            "rate":4,
            "cost":0,
            "desc":"北京饭店始建于年,位于北京市中心,步行五,毗邻皇宫紫禁城,与繁华的...",
            "dist":"-1",
            "lng":"116.411096",
            "lat":"39.9084880",
            "img_url":"http://img0.aibangjuxin.com/ipic/15f6cfa4e1cc98cf_8.jpg"
        },
        ...
        ]
    }
}*/


/**
 *  获取网络数据 -- json 格式,并进行解析
 * @author Administrator
 *
 */
public class ParseJson  {

	/**
	 * 解析JSON 数据
	 * @throws Exception 
	 */
	public void parseJson(String jsonStr) throws Exception{
		
		JSONObject root = new JSONObject(jsonStr);
		
		// 编号
		String index_num = (String) root.get("index_num");
		int total = root.getInt("total");
		int result_num = root.getInt("result_num");
		
		JSONObject bizsO = root.getJSONObject("bizs"); 
		JSONArray arr = bizsO.getJSONArray("biz");
		for (int i = 0; i < arr.length(); i++) {
			JSONObject bizs_ =arr.getJSONObject(i);
			String id = bizs_.getString("id");
			String addr = bizs_.getString("addr");
			Log.i("msg","编号:"+id+"',地址"+addr);
		}
		
	}
	
	/**
	 * 访问网络数据
	 * @throws IOException 
	 * @throws ClientProtocolException 
	 */
	public String accessIntent() throws Exception{
		
		// 请求服务器地址
		String path = "http://169.254.111.39:8080/myjson.html";
		
		// Get 方式进行请求
		HttpGet httpGet = new HttpGet(path);
		
		// 默认客户端
		HttpClient httpClient = new DefaultHttpClient();
		
		// 请求响应
		HttpResponse httpResponse = httpClient.execute(httpGet);
		
		// 判断响应结果
		if(httpResponse.getStatusLine().getStatusCode() == 200){ // 响应成功
			
			HttpEntity httpEntity = httpResponse.getEntity(); 
			String result = EntityUtils.toString(httpEntity, "gbk");
			Log.i("msg",result);
			return result;
		}
		
		return null;
	}	
	
}

post的请求方式:

public class HttpURLActivity extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        System.out.println("start url..."); 
        String url = "http://192.168.2.112:8080/JustsyApp/Applet"; 
        // 第一步,创建HttpPost对象 
        HttpPost httpPost = new HttpPost(url); 
 
        // 设置HTTP POST请求参数必须用NameValuePair对象 
        List<NameValuePair> params = new ArrayList<NameValuePair>(); 
        params.add(new BasicNameValuePair("action", "downloadAndroidApp")); 
        params.add(new BasicNameValuePair("packageId", "89dcb664-50a7-4bf2-aeed-49c08af6a58a")); 
        params.add(new BasicNameValuePair("uuid", "test_ok1")); 
 
        HttpResponse httpResponse = null; 
        try { 
            // 设置httpPost请求参数 
            httpPost.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8)); 
            httpResponse = new DefaultHttpClient().execute(httpPost); 
            //System.out.println(httpResponse.getStatusLine().getStatusCode()); 
            if (httpResponse.getStatusLine().getStatusCode() == 200) { 
                // 第三步,使用getEntity方法活得返回结果 
                String result = EntityUtils.toString(httpResponse.getEntity()); 
                System.out.println("result:" + result); 
                T.displayToast(HttpURLActivity.this, "result:" + result); 
            } 
        } catch (ClientProtocolException e) { 
            e.printStackTrace(); 
        } catch (IOException e) { 
            e.printStackTrace(); 
        } 
        System.out.println("end url..."); 
        setContentView(R.layout.main); 
    } 
}

相关推荐