GET 和POST 请求
GET和POST是HTTP协议里的基本模块。要使用这些类型的请求,我们首先需要打开一个连接到远程服务器连接:
1 | HttpURLConnection con = (HttpURLConnection) ( new URL(url)).openConnection(); |
2 | con.setRequestMethod( "POST" ); |
我们在第一行得到HttpURLConnection,而在第二行我们设置了方法同时在最后连接到服务器。
一旦我们打开了连接,我们使用OutputStream在它上面写入东西。
1 | con.getOutputStream().write( ( "name=" + name).getBytes()); |
我们已经知道参数是用键-值对来写入。
最后一步是使用InputStream读取返回。
1 | InputStream is = con.getInputStream(); |
2 | byte [] b = new byte [ 1024 ]; |
3 | while ( is.read(b) != - 1 ) |
4 | buffer.append( new String(b)); |
现在所有东西都非常简单,但我们要记住一件事情:创建一个HTTP连接比较耗时的操作,有时候可能需要很长时间所以我们不能在主线程里运行它,否则我们会得到一个ANR
(Application Not Responding)问题。要解决这个问题,我们可以用一个AsyncTask。
01 | private class SendHttpRequestTask extends AsyncTask<String, Void, String>{ |
04 | protected String doInBackground(String... params) { |
05 | String url = params[ 0 ]; |
06 | String name = params[ 1 ]; |
07 | String data = sendHttpRequest(url, name); |
12 | protected void onPostExecute(String result) { |
13 | edtResp.setText(result); |
14 | item.setActionView( null ); |
运行APP我们得到了:
我们可以看到传了一个name到服务器同时它回复了一个典型的“Hello...”。在服务器端我们可以检查服务器是否正确接收到我们传递的参数。