Android如写cookie使用HttpPost/HttpGet

本文展示了一个使用Android中AsyncTask实现后台登录请求的例子。通过HttpPost发送登录信息,并处理响应数据,包括异常处理和进度提示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

class async extends AsyncTask<String, Object, String> {
@Override
protected void onPreExecute() {
progress.setContentView(R.layout.main_progressbar);
progress.show();
}

@Override
protected String doInBackground(String... par) {
HttpPost post = new HttpPost(par[0]);
params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("methodName", "login"));
params.add(new BasicNameValuePair("username", username));
params.add(new BasicNameValuePair("password", password));
//加入cookie
Cookie cookie=new BasicClientCookie("",""); 
CookieSpecBase cookieSpecBase=new BrowserCompatSpec(); 
List<Cookie> cookies=new ArrayList<Cookie>(); 
cookies.add(cookie);
cookieSpecBase.formatCookies(cookies);
post.setHeader(cookieSpecBase.formatCookies(cookies).get(0));
 
DefaultHttpClient client=new DefaultHttpClient();
try {
post.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));
try {
res = client.execute(post);
} catch (Exception e) {
return "网络连接错误,请检查网络是否打开!";
}
responseCode = res.getStatusLine().getStatusCode();
if (responseCode != 200)
return "服务器正忙! 返回代码为:" + responseCode;
//得到cookie
List<Cookie>  cookiess=client.getCookieStore().getCookies();
cookiess.get(0).getName();
cookiess.get(0).getValue();
bis = new ByteArrayInputStream(EntityUtils.toByteArray(res
.getEntity()));
dis = new DataInputStream(bis);
c = new Customers();
if (dis.readUTF().equals("notnull")) {
c.setCustomerid(dis.readLong());
c.setUsername(dis.readUTF());
c.setPassword(dis.readUTF());
c.setRealname(dis.readUTF());
c.setIdentify(dis.readUTF());
c.setSex(dis.readUTF());
c.setBirthday(dis.readUTF());
c.setCustomeraddress(dis.readUTF());
c.setCreditcard(dis.readUTF());
c.setEmail(dis.readUTF());
c.setTelephone(dis.readUTF());
c.setAddress(dis.readUTF());
c.setZip(dis.readUTF());
c.setRemark(dis.readUTF());
wirteToFile(c.getUsername(), c.getPassword());
} else {
return "请重新输入密码或者用户名不正确!";
}

} catch (UnsupportedEncodingException e) {
return "错误:UnsupportedEncodingException";
} catch (IOException e) {
e.printStackTrace();
return "错误:读取流出错!";
} finally {
try {
if (dis != null || bis != null) {
dis.close();
bis.close();
}
} catch (IOException e) {
return "关闭流失败";
}
}
return null;
}

@Override
protected void onPostExecute(String result) {
progress.cancel();
if (result != null) {
fail = true;
alertDialog(result);
}
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值