Android中用get方式提交数据到服务器

用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"));
    }
}

注意事项

  1. 组拼到url地址后面的数据一定要进行URL编码,不然数据会提交失败
  2. 组拼url地址的时候不要忘记了”?”,”&”,”=”等连接符,不然数据也提交不成功

用到的重要api

  1. URLEncoder.encode(username, “utf-8”);把数据进行URL编码
  2. ByteArrayOutputStream()用于把流数据转换成字符串
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值