android 手机端获取服务器端的json数据

原创 2013年12月05日 23:06:22

这两天学了android 获取服务器端json数据,特地给大家分享一下:

我们的目标是------》获取到json数据,不管服务器端的是什么,只要能在servlet页面输出一个json。剩下的就看手机端如何获取的了。

目前我就学到了 HttpClient获取服务器端json和connection获取服务端json

先给各位大哥献上代码先:

package com.example.getjson;
//这里是一群import-------------------------闪过

//直接上正题-------------为了方便我把代码写在一个类里面了----------------实体类自己写,layout自己写。
public class MainActivity extends Activity {
private TextView view1;
private Button button1,button2;
Handler hander;
String result=null;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
view1=(TextView)findViewById(R.id.test1);
button1=(Button)findViewById(R.id.button1);
button2=(Button)findViewById(R.id.button2);
hander=new Handler(){
public void handleMessage(Message msg){
switch(msg.what){
case 1: Log.i("json", "调用getmethods()");
       view1.setText(result);break;
case 2: Log.i("json", "调用getjson()");
      view1.setText(result);;break;
default :Log.i("json", "没有找到");
}

}
};
button1.setOnClickListener(new Button.OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub

new Thread(new Runnable() {

@Override
public void run() {
// TODO Auto-generated method stub
getmethods();//--------------------------------------------这个是获得服务器json的第一种方法
Message message=new Message();
message.what=1;
hander.sendMessage(message);//--------------------------这个是打印出获取的json
}
}).start();

}
});
button2.setOnClickListener(new Button.OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub

         new Thread(new Runnable() {

@Override
public void run() {
// TODO Auto-generated method stub
getjson();       //--------------------------------------------这个是获得服务器json的第一种方法
Message message=new Message();
message.what=2;
hander.sendMessage(message);//--------------------------这个是打印出获取的json
}
}).start();
}
});

}


//好了上面就是做准备的线程工作不想讲解。。想知道的问我。

public void getmethods(){
HttpResponse httpResponse = null; 

HttpClient client=new DefaultHttpClient();//----------httpclient访问
     try { 
         // 设置httpPost请求参数 
    List<NameValuePair> params=new ArrayList<NameValuePair>(); //这个是带有参数的请求--必须用NameValuePair类
    params.add(new BasicNameValuePair("ID", "201096064031"));  //设置参数
    HttpPost httppost = new HttpPost();  //创建post请求对象
         httppost.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));   //设置参数编码
    // 创建一个GET请求
         Log.i("json", "发送情求");
         HttpPost request = new HttpPost("http://192.168.1.xxx:8080/Test/TestServlet");//这是没有参数的请求--------------和httppost对比下
         httpResponse =client.execute(request); //参数:是不含参  换成httppost就是有参数请求
         if (httpResponse.getStatusLine().getStatusCode() == 200) {   //---------------------200大家懂的这是 请求成功
             // 使用getEntity方法活得返回结果 
             result = EntityUtils.toString(httpResponse.getEntity()); //获取返回数据
             Log.i("json", "数据是:"+result);
         } 
     } catch (ClientProtocolException e) { 
         e.printStackTrace();
     } catch (IOException e) { 
         e.printStackTrace(); 
     } 
}
 public void getjson(){   //这是第二种获取服务器json的方法---------用connection---------------------第二种
 
String json1=null;
String json2="";
try {

Log.i("json", "1初始化url");
URL url=new URL("http://192.168.1.XXX:8080/Test/TestServlet");
Log.i("json", "2建立连接");
HttpURLConnection con=(HttpURLConnection)url.openConnection();
con.setDoInput(true);
con.setDoOutput(true);

                con.setConnectTimeout(3000);
Log.i("json", "3设置请求方法");
con.setRequestMethod("GET");
if(con.getResponseCode() == 200){//不做解释了------------
Stu stu;//---------------这是测试用的实体类
java.io.InputStream in = con.getInputStream(); //--读取到inputstream流中
BufferedReader buffer=new BufferedReader(new InputStreamReader(in));//--读取到字符流中
while((json1=buffer.readLine())!=null)//---读取字符流
{
if(json1.length()>0){
json2=json2+json1;
}
}
JSONArray array=new JSONArray(json2);将json2解析成json类型
List<Stu> list=new ArrayList<Stu>();
for(int i=0;i<array.length();i++){   //-------------------将json解析成实体放到list里面
JSONObject json=array.getJSONObject(i);
stu=new Stu();
stu.setId(json.getString("Id"));
stu.setName(json.getString("Name"));
stu.setAge(json.getString("Age"));
list.add(stu);
}
Log.i("json", "读取数据完毕"+list.get(0).getId());

}
else {
Log.i("json", "网络读取发生错误");
}
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Log.i("json", "最终得到字符数据");
 }
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}


}

如果需求源代码请告诉我。包含服务器端servlet    点击打开链接

如何用Fiddler抓取手机JSON数据

1 手机必须和电脑是在同一网络内  2 设置手机无线网上的修改网络  3 点击高级选项  4 设置服务器主机名,也就是ip地址(ip地址在电脑端命令行输入 ipconfig 即可获取到)  5 服务器...
  • jiangbqing
  • jiangbqing
  • 2016年12月22日 10:55
  • 2367

Android数据转化为Json形式给客户端及客户端使用json数据

(1)首先创建生成原始数据的service,VideoNewsServiceBean,这是一个接口的实现类,接口的功能如下:public interface VideoNewsService { ...
  • u010870518
  • u010870518
  • 2015年03月30日 15:52
  • 1695

网络编程-json数据的解析

网络编程—json数据的手动解析与第三方jar包的使用,网络接口编程
  • coder_bai
  • coder_bai
  • 2016年08月09日 20:40
  • 499

模拟Json加载数据(淘宝购物车效果1)

html lang="en"> head> meta charset="UTF-8"> title>Titletitle> style> *{margin:0;...
  • yaya1286249672
  • yaya1286249672
  • 2017年01月02日 19:56
  • 1149

选择、搜索国家码&数据库表转Json文件

选择、搜索国家码&数据库表转Json文件
  • MobileDreamWorks
  • MobileDreamWorks
  • 2015年08月10日 17:29
  • 545

android客户端从服务器端获取json数据并解析的实现代码

首先客户端从服务器端获取json数据 1、利用HttpUrlConnection 复制代码 代码如下: /**       * 从指定的URL中获取数组       * @param...
  • qq_35114086
  • qq_35114086
  • 2016年09月22日 16:57
  • 1096

Android手机号码归属地的查询(使用聚合数据API,获取JSON数据并解析)

Android获取手机号码归属地的简单Demo
  • chen_lian_
  • chen_lian_
  • 2016年02月27日 11:13
  • 2782

Android 获取通讯录所有的联系人的方法 json打印的就是这些数据

private void readContacts() { // 首先,从raw_contacts中读取联系人的id("contact_id") // 其次,根据contact_id从data...
  • qq_32521313
  • qq_32521313
  • 2017年04月26日 11:57
  • 411

Android数据转化为Json形式给客户端及客户端使用json数据

(1)首先创建生成原始数据的service,VideoNewsServiceBean,这是一个接口的实现类,接口的功能如下:public interface VideoNewsService { ...
  • u010870518
  • u010870518
  • 2015年03月30日 15:52
  • 1695

Android+struts2+JSON方式的手机开发

Android+struts2+JSON方式的手机开发 博客分类: Android 开发学习        在手机的后台服务无论是调用WebService还是Http请求,多数...
  • killmice
  • killmice
  • 2013年06月17日 17:31
  • 7181
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android 手机端获取服务器端的json数据
举报原因:
原因补充:

(最多只允许输入30个字)