post get请求的运用----android篇

      GET是从服务器上获取数据,POST是向服务器传送数据。get,post在PHP网络编程中经常会运用到。

    get post请求在Android如何运用呢?

   

  GET是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。 POST是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程
  GET方式提交的数据最多只能是1024字节,理论上 POST没有限制,可传较大量的数据
  GET安全性非常低, POST安全性较高。但是执行效率却比 POST方法好。
   next, 下面分别用Post和 GET 方法来实现 Android 应用的 人员登入 ,首先我们搭建一个服务器,这里我使用WAMP环境,以使用ThinkPHP框架为例。响应代码如下(response code)

   code:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
    <?php
namespace Home\Controller;
use Think\Controller;
class <a title="Android" href=" http://www.android-study.com/wangluobiancheng/628.html">Android</a>Controller extends Controller {
    public function index()
    {
          //获取账号密码
          $id=I('username');
          $pwd=I('password');
          $User=M('user');  
          //查询数据库
          $data = $User->where("NAME='$id'  AND PASSWORD='$pwd' ")->find();
          //登入成功
          if($data)
          {
              $response = array('success' => true,'msg'=>'登入成功');
               
              $response=json_encode($response);
              echo  $response;//返回json格式
          }
          //登入失败
          else
          {
              $response = array('success' => false,'msg'=>'账号或密码错误');           
              $response=json_encode($response);
              echo  $response;//返回json格式
          }
    }
         
}
添加网络权限,
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
     Android的 网络请求主要使用java.net包中的HttpURLConnection类,服务器与 Android客户端数据交互格式为Json。
1.利用 POST请求方式来实现 人员登入。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
    package com.dream.apm;
 
import android.app.Activity;
import android.content.pm.ActivityInfo;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.Toast;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
 
import java.io.*;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
 
public class MyActivity extends Activity {
 
    //请求地址
    private static String url=" http://10.0.2.2:8080/think/index.php/Home/<a title="Android" href=" http://www.android-study.com/wangluobiancheng/628.html">Android</a>";
    public Button start;
 
    public EditText username,password;
 
    public URL http_url;
 
    public String data;
 
    public Handler handler;
 
    @Override
      public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        //设置全屏
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
        //去除应用程序标题
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        //设置竖屏
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
        setContentView(R.layout.main);
 
        start=(Button)findViewById(R.id.start_one);
        username=(EditText)findViewById(R.id.username);
        password=(EditText)findViewById(R.id.password);
        //消息处理器
 
        handler=new Handler(Looper.getMainLooper())
        {
            @Override
            public void handleMessage(Message msg)
            {
                super.handleMessage(msg);
                switch(msg.what)
                {
                    //登入成功
                    case 1:
                        Toast.makeText(MyActivity.this, msg.getData().getString("msg"),
                                Toast.LENGTH_SHORT).show();
                        break;
                    //登入失败
                    case 2:
                        Toast.makeText(MyActivity.this, msg.getData().getString("msg"),
                                Toast.LENGTH_SHORT).show();
                        break;
 
                }
            }
        };
 
        start.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //是否输入账号密码
                if(username.getText().toString().length()>0&&password.getText().toString().length()>0){
                    //子线程可以获取UI的值,不能更改
                    new Thread(new Runnable() {
                        @Override
                        public void run() {
                            try {
                                http_url=new URL(url);
                                if(http_url!=null)
                                {
                                    //打开一个HttpURLConnection连接
                                    HttpURLConnection conn = (HttpURLConnection) http_url.openConnection();
                                    conn.setConnectTimeout(5* 1000);//设置连接超时
                                    conn.setRequestMethod("<a title="POST" href="http://www.android-study.com/wangluobiancheng/628.html">POST</a>");//以get方式发起请求
                                    //允许输入输出流
                                    conn.setDoInput(true);
                                    conn.setDoOutput(true);
                                    conn.setUseCaches(false);//使用Post方式不能使用缓存
                                    //获取账号密码
                                    String params = "username=" + username.getText().toString()
                                            + "&password=" + password.getText().toString();
                                    //设置请求体的类型是文本类型
                                    conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
                                    //设置请求体的长度--字节长度
                                    conn.setRequestProperty("Content-Length",String.valueOf(params.getBytes().length) );
                                    //发送post参数
                                    BufferedWriter bw=new BufferedWriter(newOutputStreamWriter(conn.getOutputStream()));
                                    bw.write(params);
                                    bw.close();
                                    //接收服务器响应
                                    if (conn.getResponseCode() == 200) {
                                        InputStream is = conn.getInputStream();//得到网络返回的输入流
                                        BufferedReader buf=new BufferedReader(newInputStreamReader(is));//转化为字符缓冲流
                                        data=buf.readLine();
                                        buf.close();is.close();
                                        //判断登入结果
                                        analyse(data);
                                    }
                                }
                            } catch( Exception e) {
                                e.printStackTrace();
                            }
                        }
                    }).start();
                }
                else
                {
                    Toast.makeText(MyActivity.this, "请完整输入账号密码",
                            Toast.LENGTH_SHORT).show();
                }
            }
        });
    }
 
    public void analyse (String data)
    {
        System.out.println(data);
        try {
            JSONObject json_data=new JSONObject(data);
            Boolean state=json_data.getBoolean("success");
            String msg=json_data.getString("msg");
            //登入成功
            if(state)
            {
                //发送消息
                Message message= new Message();
                message.what=1;
                Bundle temp = new Bundle();
                temp.putString("msg",msg);
                message.setData(temp);
                handler.sendMessage(message);
 
            }
            //登入失败
            else
            {
                Message message= new Message();
                message.what=2;
                Bundle temp = new Bundle();
                temp.putString("msg",msg);
                message.setData(temp);
                handler.sendMessage(message);
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }
}

2.利用GET请求方式来实现人员登入

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158

package com.dream.apm;
 
import android.app.Activity;
import android.content.pm.ActivityInfo;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.Toast;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
 
import java.io.*;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
 
public class MyActivity extends Activity {
 
    public Button start;
 
    public EditText username,password;
 
    public URL http_url;
 
    public String data;
 
    public Handler handler;
 
    @Override
      public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        //设置全屏
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
        //去除应用程序标题
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        //设置竖屏
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
        setContentView(R.layout.main);
 
        start=(Button)findViewById(R.id.start_one);
        username=(EditText)findViewById(R.id.username);
        password=(EditText)findViewById(R.id.password);
        //消息处理器
 
        handler=new Handler(Looper.getMainLooper())
        {
            @Override
            public void handleMessage(Message msg)
            {
                super.handleMessage(msg);
                switch(msg.what)
                {
                    //登入成功
                    case 1:
                        Toast.makeText(MyActivity.this, msg.getData().getString("msg"),
                                Toast.LENGTH_SHORT).show();
                        break;
                    //登入失败
                    case 2:
                        Toast.makeText(MyActivity.this, msg.getData().getString("msg"),
                                Toast.LENGTH_SHORT).show();
                        break;
 
                }
            }
        };
 
        start.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //是否输入账号密码
                if(username.getText().toString().length()>0&&password.getText().toString().length()>0){
                    //子线程可以获取UI的值,不能更改
                    new Thread(new Runnable() {
                        @Override
                        public void run() {
                            try {
                                //请求地址--
                                 String url=" http://10.0.2.2:8080/think/index.php/Home/<a title="Android" href=" http://www.android-study.com/wangluobiancheng/628.html">Android</a>?"+"username=" + URLEncoder.encode(username.getText().toString(), "UTF-8")
                                        + "&password=" + URLEncoder.encode(password.getText().toString(), "UTF-8");
                                http_url=new URL(url);
                                if(http_url!=null)
                                {
                                    //打开一个HttpURLConnection连接
                                    HttpURLConnection conn = (HttpURLConnection) http_url.openConnection();
                                    conn.setConnectTimeout(5* 1000);//设置连接超时
                                    conn.setRequestMethod("<a title="GET" href="http://www.android-study.com/wangluobiancheng/628.html">GET</a>");//以get方式发起请求
                                    //允许输入流
                                    conn.setDoInput(true);
                                    //接收服务器响应
                                    if (conn.getResponseCode() == 200) {
                                        InputStream is = conn.getInputStream();//得到网络返回的输入流
                                        BufferedReader buf=new BufferedReader(newInputStreamReader(is));//转化为字符缓冲流
                                        data=buf.readLine();
                                        buf.close();is.close();
                                        //判断登入结果
                                        analyse(data);
                                    }
                                }
                            } catch( Exception e) {
                                e.printStackTrace();
                            }
                        }
                    }).start();
                }
                else
                {
                    Toast.makeText(MyActivity.this, "请完整输入账号密码",
                            Toast.LENGTH_SHORT).show();
                }
            }
        });
    }
 
    public void analyse (String data)
    {
        System.out.println(data);
        try {
            JSONObject json_data=new JSONObject(data);
            Boolean state=json_data.getBoolean("success");
            String msg=json_data.getString("msg");
            //登入成功
            if(state)
            {
                //发送消息
                Message message= new Message();
                message.what=1;
                Bundle temp = new Bundle();
                temp.putString("msg",msg);
                message.setData(temp);
                handler.sendMessage(message);
 
            }
            //登入失败
            else
            {
                Message message= new Message();
                message.what=2;
                Bundle temp = new Bundle();
                temp.putString("msg",msg);
                message.setData(temp);
                handler.sendMessage(message);
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }

}

可以看到界面啦

post get请求的运用----android篇_第1张图片

   OK,adiOS

你可能感兴趣的:(post get请求的运用----android篇)