2018-04-30

安卓使用http协议访问网络

书上写的代码我允许了一下发现有个错误,说是因为SDK3 版本以上谷歌已经不让访问网络主线程的方式了,所以就改成了异步处理,用的AsyncTask


2018-04-30_第1张图片
image.png
2018-04-30_第2张图片
image.png

第一步

创建了一个匿名的AsyncTask 它有三个参数,第一个是输入参数,第二个是后台任务执行的进度,第三个是后台计算结果的类型
创建好之后,再调用execute(把我们要传入的链接写入)比如http://192.168.6.111:9000/demo

第二步

 protected String doInBackground(String... params) {
   try {
         URL url = new URL(params[0]); //之前传入了参数,在这里string...params就可以用到
         HttpURLConnection connection= (HttpURLConnection) url.openConnection(); //获取链接的方式
                
         int resultCode=connection.getResponseCode(); //获取到返回状态码 200是成功  可以忽视
//一下就是对服务器端返回的数据进行处理
StringBuffer response =null;            if(HttpURLConnection.HTTP_OK==resultCode){ //可以不加这个判断  如果状态码是正常的就去处理数据
        InputStream in =connection.getInputStream();
                        BufferedReader reader = new BufferedReader(new InputStreamReader(in));
                        response = new StringBuffer();
                        String line = null;
                        while((line=reader.readLine())!=null){
                            response.append(line);
                        }
                    }

                    return response.toString();
                } catch (MalformedURLException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                return "1";
    }
    
    
    
//显示结果用的方法
@Override  
 protected void onPostExecute(String s) {
                Toast.makeText(getApplicationContext(),s,Toast.LENGTH_LONG).show();
                mPassWordEditText.setText(s);
                super.onPostExecute(s);
}

第三步

最主要的就是1,2步,然后看看服务器的代码怎么写


2018-04-30_第3张图片
image.png

1.集成Controller
2.写一个静态方法返回类型void play框架规定的
3.获取到客户端传递过来的参数
4.进行逻辑处理
5.操作结果返回给你客户端

public static void demo() {
    String id=params.get("username"); //获取到客户端出入过来的值,值得名字叫username
    if(id.equals("1")) {  //逻辑处理
         renderJSON("OK"); //成功结果返回
    }else {
         int unreadMessages =1;//失败结果返回 
         renderJSON("{\"messages\": " + unreadMessages +"}");
    }
}

第四歩传递URL

2018-04-30_第4张图片
image.png

初始的地址是 本地IP地址:端口号/方法名
然后对IP地址进行拼接

这个的访问方式是get的访问方式,Post的访问方式我折腾了很久一直说找不到链接,有点迷茫

你可能感兴趣的:(2018-04-30)