用get方式把数据提交到服务器
android端核心代码:
//开启一个线程去访问网络
new Thread () {
@Override
public void run(){
public void run(){
try {
String result = LoginService.loginByGet(username,password);
System.out.println("登录状态:" + result );
} catch( IOException e) {
e . printStackTrace ();
}
}
}
}. start ();
/**
* 1、GET方式进行登录
* @throws IOException
*/
public static String loginByGet(String username, String password)
throws IOException {
//把会出现中文的内容进行URL编码,只有进行了编码之后的才能组合到url地址上提交给服务器
//不然会数据会提交失败
username = URLEncoder.encode(username, "utf-8");
//组拼url地址,根据浏览器get方式提交数据的格式来组拼的
String path = "http://192.168.221.221:8080/web/LoginServlet?username="+username+"&password="+password;
URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
//设置请求头
conn.setRequestMethod("GET");
conn.setConnectTimeout(5000);
conn.setReadTimeout(5000);
//获得状态码
int code = conn.getResponseCode();
if (code == 200) {
InputStream in = conn.getInputStream();
String text = StrStreamUtils.streamToText(in);
return text;
} else {
return null;
}
}
public class StrStreamUtils {
/**
* 将输入流转成文本
* @param in
* @return
*/
public static String streamToText(InputStream in) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
int len = 0;
byte[] buf = new byte[1024];
try {
while ((len = in.read(buf)) != -1) {
baos.write(buf, 0, len);
}
byte[] byteArray = baos.toByteArray();
return new String(byteArray);
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
}
web端代码
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取提交上来的用户名和密码
String username = request.getParameter("username");
String password = request.getParameter("password");
username = new String(username.getBytes("iso8859-1"), "utf-8");
System.out.println("用户名:" + URLDecoder.decode(username,"utf-8"));
System.err.println("密码:" + password);
// 模拟查询数据库
if ("hacket".equals(username) && "123456".equals(password)) {
// 返回登陆成功
response.getOutputStream().write("登录成功".getBytes("utf-8"));
} else {
// 返回登陆失败
response.getOutputStream().write("登录失败".getBytes("utf-8"));
}
}
注意事项
- 组拼到url地址后面的数据一定要进行URL编码,不然数据会提交失败
- 组拼url地址的时候不要忘记了”?”,”&”,”=”等连接符,不然数据也提交不成功
用到的重要api
- URLEncoder.encode(username, “utf-8”);把数据进行URL编码
- ByteArrayOutputStream()用于把流数据转换成字符串