Android原生请求json服务器数据

一,首先定义一个触发事件,若是点击事件,就写个buttom;
二,请求网络数据需要开启线程,因此要写的是什么呢?请看下面详细教程;

public class LoginActivity extends AppCompatActivity implements View.OnClickListener {

    private Handler handler;//开启线程是需要的

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        handler=new MyHandler();//此时new一个 MyHandler()
        back=(LinearLayout)findViewById(R.id.back);
        back.setOnClickListener(this);
        new PostThread().start();//用post方法发送请求

    }

接下来你懂得了,真真切切的请求服务器json数据了,体验获取到json数据以及json解析的方法;

class PostThread extends Thread{
            public void run(){
                HttpURLConnection conn=null;
                String urlStr="。。。。。";//这个路径就用自己的咯~
                InputStream is = null;
                String resultData = "";
                try {
                    URL url = new URL(urlStr); //URL对象
                    conn = (HttpURLConnection)url.openConnection(); //使用URL打开一个链接,下面设置这个连接
                    conn.setRequestMethod("POST"); //使用POST请求
                    if(conn.getResponseCode()==200) {//返回200表示相应成功
                        is = conn.getInputStream();   //获取输入流
                        InputStreamReader isr = new InputStreamReader(is);
                        BufferedReader bufferReader = new BufferedReader(isr);
                        String inputLine = "";
                        while ((inputLine = bufferReader.readLine()) != null) {
                            resultData += inputLine + "\n";
                        }

                        System.out.println("post方法取回内容:" + resultData);
                        showRes("post方法取回内容:" + resultData);
                        parseJSONWithJSONObject(resultData);
                    }

                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    //方法一:使用JSONObject
    private void parseJSONWithJSONObject(String resultData) {
        try {
            JSONObject jsonObject=new JSONObject(resultData);
            String tips=jsonObject.getString("tips");
            if(tips.equals("ok")){
                JSONObject userBeanObject=jsonObject.getJSONObject("userBean");//这里的json解析,是用的gson解析,获取到userbean,既方便又好使;
                String  age=userBeanObject.getString("email");// 用户名
                json_to.setText(age);
            }
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }
    //用于主线程发送消息
    public void showRes(String res){
        Bundle bundle=new Bundle();
        bundle.putString("res",res);//bundle中也可以放序列化或包裹化的类对象数据

        Message msg=handler.obtainMessage();//每发送一次都要重新获取
        msg.setData(bundle);
        handler.sendMessage(msg);//用handler向主线程发送信息
    }

    //自定义handler类
    class MyHandler extends Handler {
        @Override
        //接收别的线程的信息并处理
        public void handleMessage(Message msg) {
            Bundle bundle=msg.getData();
            //json_one.setText(bundle.get("res").toString());
        }
    }

没错,这样就可以完美的请求到服务器json数据了,因此要注意的地方又两个知识点,首先是android原生请求要开启线程,以防数据量过大内存泄露,二者是解析json的时候,博主我用到的是Gson解析,直接把服务器路径的json字符串放进去就ok了,不会的网上查下gson使用,是不是瞬间提升档次不少?希望每篇文章都可以帮助到大家学习,一起尽情期待更好的文章发布吧!哈哈

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值