HttpGet和HttpPost的使用步骤
1. 创建HttpGet或HttpPost对象,将要请求的URL通过构造方法传入HttpGet或HttpPost对象。
2. 使用DefaultHttpClient.execute方法发送HTTP GET或HTTP POST请求,并返回HttpResponse对象。
3. 通过HttpResponse接口的getEntity方法返回响应信息,并进行相应的处理。
如果使用HttpPost方法提交HTTP POST请求,还需要使用HttpPost类的 setEntity方法设置请求参数。
1 @Override 2 public void onClick(View view) { 3 // 读者需要将本例中的IP换成自己机器的IP 4 String url = "http://192.168.17.105:8080/querybooks/QueryServlet"; 5 TextView tvQueryResult = (TextView) findViewById(R.id.tvQueryResult); 6 7 HttpResponse httpResponse = null; 8 try { 9 switch (view.getId()) { 10 // 提交HTTP GET请求 11 case R.id.btnGetQuery: 12 // 向url添加请求参数 13 url += "?bookname=" + etBookName.getText().toString(); 14 // 第1步:创建HttpGet对象 15 HttpGet httpGet = new HttpGet(url); 16 // 第2步:使用execute方法发送HTTP GET请求,并返回HttpResponse对象 17 httpResponse = new DefaultHttpClient().execute(httpGet); 18 // 判断请求响应状态码,状态码为200表示服务端成功响应了客户端的请求 19 if (httpResponse.getStatusLine().getStatusCode() == 200) { 20 // 第3步:使用getEntity方法获得返回结果 21 String result = EntityUtils.toString(httpResponse 22 .getEntity()); 23 // 去掉返回结果中的“ ”字符,否则会在结果字符串后面显示一个小方格 24 tvQueryResult.setText(result.replaceAll(" ", "")); 25 } 26 break; 27 // 提交HTTP POST请求 28 case R.id.btnPostQuery: 29 // 第1步:创建HttpPost对象 30 HttpPost httpPost = new HttpPost(url); 31 // 设置HTTP POST请求参数必须用NameValuePair对象 32 List<NameValuePair> params = new ArrayList<NameValuePair>(); 33 params.add(new BasicNameValuePair("bookname", etBookName 34 .getText().toString())); 35 // 设置HTTP POST请求参数 36 httpPost.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8)); 37 // 第2步:使用execute方法发送HTTP POST请求,并返回HttpResponse对象 38 httpResponse = new DefaultHttpClient().execute(httpPost); 39 if (httpResponse.getStatusLine().getStatusCode() == 200) { 40 // 第3步:使用getEntity方法获得返回结果 41 String result = EntityUtils.toString(httpResponse 42 .getEntity()); 43 // 去掉返回结果中的“ ”字符,否则会在结果字符串后面显示一个小方格 44 tvQueryResult.setText(result.replaceAll(" ", "")); 45 } 46 break; 47 } 48 } catch (Exception e) { 49 tvQueryResult.setText(e.getMessage()); 50 } 51 }
1 <uses-permission android:name="android.permission.INTERNET" />
HttpURLConnection的使用步骤
1. 用Url.openConnection方法获取HttpURLConnection对象。
2. 设置请求方法,如httpURLConnection.setRequestMethod("POST");
3. 设置输入输出及其它权限。
4. 设置HTTP请求头。
5. 输入和输出数据。
6. 关闭输入输出流。
Socket发送数据
Socket socket = new Socket("192.168.17.105", 80);
OutputStream os = socket.getOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(os);
BufferedWriter bw = new BufferedWriter(osw);
bw.write("hello world");
bw.flush();
bw.close();
Socket接收数据
Socket socket = new Socket("192.168.17.105", 80);
InputStream is = socket.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String s = "";
while((s = br.readLine()) != null)
System.out.println(s);
br.close();
ServerSocket监听客户端请求
ServerSocket serverSocket = new ServerSocket(1234); // 绑定端口
while(true) // 处理其他任务的代码
{
Socket socket = serverSocket.accept(); // 等待接收客户端请求
// 处理其他任务的代码
new ThreadClass(socket).start();
}