记一个JSON解析,客户端,服务端

来源:互联网 发布:sql语句美化小工具 编辑:程序博客网 时间:2024/06/08 09:48

安卓端


package com.example.httprequest;import java.io.IOException;import java.util.ArrayList;import java.util.List;import org.apache.http.HttpEntity;import org.apache.http.HttpRequest;import org.apache.http.HttpResponse;import org.apache.http.NameValuePair;import org.apache.http.client.ClientProtocolException;import org.apache.http.client.HttpClient;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.client.methods.HttpUriRequest;import org.apache.http.entity.BasicHttpEntity;import org.apache.http.impl.client.DefaultHttpClient;import org.apache.http.impl.conn.DefaultClientConnection;import org.apache.http.message.BasicNameValuePair;import org.apache.http.util.EntityUtils;import org.json.JSONArray;import org.json.JSONException;import org.json.JSONObject;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.TextView;public class MainActivity extends Activity implements OnClickListener {private Button get, post;private TextView info;private Handler handle = new Handler();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);get = (Button) findViewById(R.id.get);post = (Button) findViewById(R.id.post);info = (TextView) findViewById(R.id.info);}@Overrideprotected void onResume() {// TODO Auto-generated method stubsuper.onResume();get.setOnClickListener(this);post.setOnClickListener(this);}private List<MyJosn> list=new ArrayList<MyJosn>();//用来存数据@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.get://使用网络操作放在线程中new Thread(new Runnable() {@Overridepublic void run() {final String result = doGet();//{key,[{key1,value,key2,value,key3,vaule},{key1,value,key2,value,key3,vaule},{key1,value,key2,value,key3,vaule}]}try {JSONObject jo=new JSONObject(result);//获得jsonobjectJSONArray ja=jo.getJSONArray("data");//取得数组for(int i=0;i<ja.length();i++){//循环赋值将数据存到list中;JSONObject joo=ja.getJSONObject(i);String key1=joo.getString("key1");String key2=joo.getString("key2");String key3=joo.getString("key3");MyJosn my=new MyJosn();//将数据存到自定义类中my.setKey1(key1);my.setKey2(key2);my.setKey3(key3);list.add(my);}} catch (JSONException e) {// TODO Auto-generated catch blocke.printStackTrace();}//更新uihandle.post(new Runnable() {@Overridepublic void run() {info.setText(list.toString());}});}}).start();break;case R.id.post://post的请求方式,没有解析返回的jsonnew Thread(new Runnable() {@Overridepublic void run() {final String result=doPost();handle.post(new Runnable() {@Overridepublic void run() {info.setText(result);}});}}).start();break;default:break;}}private String doGet() {String result = null;try {HttpClient client = new DefaultHttpClient();//默认http客户端HttpGet request = new HttpGet("http://10.10.9.3:80/108Project/first?name=aaa");//实例化一个httpGet地址后面附加参数HttpResponse response = client.execute(request);//执行request,获得一个响应,阻塞操作result = EntityUtils.toString(response.getEntity());//取得数据,用entityutil工具转换成String;} catch (ClientProtocolException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}return result;//返回一个字符串}private String doPost() {String result = null;try {HttpClient client = new DefaultHttpClient();HttpPost request = new HttpPost(//1。post请求"http://10.10.9.3:80/108Project/first");List<NameValuePair> list=new ArrayList<NameValuePair>();//4.实例化一个list.add(new BasicNameValuePair("name", "bbb"));//5.添加HttpEntity entity=new UrlEncodedFormEntity(list, "UTF-8");//3.那么久new一个httpentity实现类吧,然后发现需要一个List<NameValuePair>,那在弄一个吧request.setEntity(entity);//2.设置请求内容,要用到一个httpentity;HttpResponse response = client.execute(request);//6.发送请求等待响应result = EntityUtils.toString(response.getEntity());//7.取得结果} catch (ClientProtocolException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}return result;}}


0 0
原创粉丝点击