分析:
1、将请求方式改成post
conn.setRequestMethod("POST");
2、设置连接可以输出
conn.setDoOutput(true);
3、告诉服务器客户端提交的数据类型(表单数据)
conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded;charset=utf-8");
application/x-www-form-urlencoded代表表单数据
如果是别的数据,这个部分是不同的,比如文件或者音频视频的二进制数据
4、创建输出流,给服务器写数据
OutputStream output=conn.getOutputStream();
output.write("username=老师".getBytes("UTF-8"));
output.close();
故服务器会受到老师这两个字
1 package com.example.htmldaimachakanqi;
2
3 import java.io.IOException;
4 import java.io.InputStreamReader;
5 import java.io.OutputStream;
6 import java.io.UnsupportedEncodingException;
7 import java.net.HttpURLConnection;
8 import java.net.MalformedURLException;
9 import java.net.URL;
10
11 import android.app.Activity;
12 import android.os.AsyncTask;
13 import android.os.Bundle;
14 import android.util.Log;
15 import android.view.View;
16 import android.widget.EditText;
17
18 public class MainActivity extends Activity {
19 private EditText et_content;
20
21 @Override
22 protected void onCreate(Bundle savedInstanceState) {
23 super.onCreate(savedInstanceState);
24 setContentView(R.layout.activity_main);
25 et_content = (EditText) findViewById(R.id.et_content);
26 }
27
28 public void onClick(View view) throws UnsupportedEncodingException {
29 new AsyncTask<String, Void, String>() {
30 @Override
31 protected String doInBackground(String... params) {
32 StringBuffer buffer=new StringBuffer();
33 try {
34 Log.d("bh", params[0]);
35 // 封装了URL对象
36 URL url = new URL(params[0]);
37 // 获取http连接对象
38 HttpURLConnection conn = (HttpURLConnection) url
39 .openConnection();
40 // 设置请求的方式
41 conn.setRequestMethod("POST");
42 // 设置请求的超时时间
43 conn.setReadTimeout(5000);
44 conn.setConnectTimeout(5000);
45 //设置连接是否可以输出
46 conn.setDoOutput(true);
47 //设置连接是否可以输入
48 conn.setDoInput(true);
49 //告诉服务器客户端提交的数据类型(表单数据)
50 conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded;charset=utf-8");
51 OutputStream output=conn.getOutputStream();
52 output.write("username=老师".getBytes("UTF-8"));
53 output.close();
54 // 获取状态码
55 int code = conn.getResponseCode();
56 Log.d("bh",code+"");
57 if (code == 200) {// 请求成功
58 Log.d("bh",conn.getHeaderFields().toString());
59 // 获取响应消息的实体内容
60 InputStreamReader reader = new InputStreamReader(
61 conn.getInputStream());
62 char[] charArr = new char[1024 * 8];
63 int len = 0;
64 while ((len = reader.read(charArr)) != -1) {
65 // 字符数组转字符串
66 String str = new String(charArr, 0, len);
67 // 在结尾追加字符串
68 buffer.append(str);
69 }
70 }
71 } catch (MalformedURLException e) {
72 e.printStackTrace();
73 } catch (IOException e) {
74 e.printStackTrace();
75 }
76 return buffer.toString();
77 }
78
79 protected void onPostExecute(String result) {
80 // 设置字符串到编辑框
81 et_content.setText(result);
82 };
83 }.execute("http://192.168.1.100:8080/WEB/TestServlet");
84 }
85 }