美文网首页
2019-08-04

2019-08-04

作者: 不在意吧 | 来源:发表于2019-08-04 19:19 被阅读0次
//MainActivity.java
//实现get方式请求天气数据,请求到数据后的具体操作未写(如转为JSONObject)
//实现post方式请求手机号的信息,同样,请求到数据后的具体操作未写(如转为JSONObject)
//以下是代码

public String acceptData;  //定义接受json数据信息的变量
//处理返回结果的函数,系统提供的类方法  //handler处理返回数据, 此方法,我写在onCreate()函数外。
        Handler handler = new Handler(){  //此函数是属于MainActivity.java所在线程的函数方法,所以可以直接条调用MainActivity的所有方法。
            @Override
            public void handleMessage(Message msg) {
                if(msg.what==0x01){   //
                    //System.out.println("handleMessage():"+acceptData);
                    //可调用  Toast.makeText(MainActivity.this,"返回内容是:"+acceptData,Toast.LENGTH_SHORT)).show();    来显示到UI 
                        //每次数据读取完毕,将acceptData置空。 具体原因,当下还未理解
                        acceptData = "";  //
                    }else{
                        Toast.makeText(MainActivity.this, "请重新输入地址:", Toast.LENGTH_SHORT).show();
                    }
                }
            }
        };

//发送天气请求,在其他地方进行调用get方式请求json数据
    public void SendGetRequest(final String url,final String content) {
        new Thread(){
            @Override
            public void run() {
                //例如String pathString =  "http://wthrcdn.etouch.cn/weather_mini?city="+"北京";  //请求天气信息
                String pathString = url + content;
                HttpURLConnection connection;
                try {
                    URL url = new URL(pathString);
                    connection = (HttpURLConnection) url.openConnection();
                    connection.setRequestMethod("GET");
                    connection.connect();
                    //接受数据
                    if(connection.getResponseCode()==HttpURLConnection.HTTP_OK){
                        InputStream inputStream = connection.getInputStream();
                        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream,"utf-8"));
                        String line;
                        while((line=bufferedReader.readLine())!=null){ //不为空进行操作
                            acceptData+=line;
                        }
                        System.out.println("接受到的数据:"+acceptData);
                        handler.sendEmptyMessage(0x01);  //请求完毕,返回自己自定义的信息 id 
                    }
                } catch (MalformedURLException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }.start();
    }
    
//请求数据post方式请求json数据
    public void sendRequestPost(final String url,final String phoneNumber){
        new Thread(){
            @Override
            public void run() {
            //如可以使用  String pathString = "https://way.jd.com/jisuapi/query4";
                String pathString = url;
                try {
                    URL url = new URL(pathString);
                    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                    connection.setRequestMethod("POST");
                    connection.setDoInput(true);
                    connection.setDoOutput(true);
                    connection.setUseCaches(false);
                    connection.setInstanceFollowRedirects(true); //有误重定向
                    connection.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
                    OutputStream outputStream = connection.getOutputStream();
                    PrintStream printStream = new PrintStream(outputStream);
                    //例如这样写入参数  // phoneNumber为外部传入的手机号 后面为密匙
                    String  submitData = "shouji="+phoneNumber+"&appkey=343c652c4127935f0b1f2ded76c6c68a";
                    
                    printStream.print(submitData); //向服务器提交数据
                    //接受数据
                    if(connection.getResponseCode()==HttpURLConnection.HTTP_OK){
                        InputStream inputStream = connection.getInputStream();
                        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream,"utf-8"));
                        String line;
                        while((line=bufferedReader.readLine())!=null){ //不为空进行操作
                            acceptData+=line;
                        }
                        handler.sendEmptyMessage(0x01); //向主线程返送
                    }
                } catch (MalformedURLException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }.start();
    }   

相关文章

网友评论

      本文标题:2019-08-04

      本文链接:https://www.haomeiwen.com/subject/zbgydctx.html