显示用户未登录
已经在主线程中进行post:
下面是所有的url地址的常量:
public static final String NETPATH = "http://restaurant.t.imooc.io/basePro/";
public static final String NETPATH_REGISTER = "user_register";
public static final String NETPATH_LOGIN = "user_login";
public static final String NETPATH_PRODUCT = "product_find";
public static final String NETPATH_ORDER = "order_find";
在登陆界面中的请求:
OkHttpUtils.post().url(FinalNumber.NETPATH + FinalNumber.NETPATH_LOGIN).addParams("username", current_user.getUsername())
.addParams("password", current_user.getPassword()).build().execute(new Callback() {
@Override
public Object parseNetworkResponse(Response response, int i) throws Exception {
data = response.body().string();
JSONObject jsonObject = new JSONObject(data);
resultCode = jsonObject.getInt("resultCode");
dataIsOk(resultCode);
Log.i("login: ",data);
return null;
}
@Override
public void onError(Call call, Exception e, int i) {
dataIsOk(resultCode);
}
@Override
public void onResponse(Object o, int i) {
}
});
private void dataIsOk(int resultcode) {
switch (resultcode) {
case -1:
Looper.prepare();
Toast.makeText(mContext, "网络故障", Toast.LENGTH_SHORT).show();
Looper.loop();
break;
case 0:
Looper.prepare();
Toast.makeText(mContext, data, Toast.LENGTH_SHORT).show();
Looper.loop();
break;
case 1:
try {
JSONObject userdataString = new JSONObject(data);
JSONObject user_login = userdataString .getJSONObject("data");
current_user = new User(user_login.getString("username"), user_login.getString("password"));
current_user.setId(user_login.getInt("id"));
SharedPreferences sharedPreferences = mContext.getSharedPreferences("userInfo", Context.MODE_PRIVATE);
SharedPreferences.Editor edit = sharedPreferences.edit();
Log.i("getuserdata: ", current_user.toString());
edit.putString("lastusername", current_user.getUsername());
edit.putString("lastpassword", current_user.getPassword());
edit.commit();
((Login_Activity) mContext).to_MainActivity();
return;
} catch (JSONException e) {
Looper.prepare();
Toast.makeText(mContext, data, Toast.LENGTH_SHORT).show();
Looper.loop();
e.printStackTrace();
}
}
}
下面是在主页面中请求订单数据:
private void getDataFromNet() {
//加载网络数据并解析
//TODO
SharedPreferences preferences = getSharedPreferences("userInfo", Context.MODE_PRIVATE);
String username = preferences.getString("lastusername", "1");
String password = preferences.getString("lastpassword", "1");
//new GetDataAsync().execute(FinalNumber.NETPATH + FinalNumber.NETPATH_ORDER);
//setListData();
OkHttpUtils.post().url(FinalNumber.NETPATH+FinalNumber.NETPATH_ORDER).addParams("currentPage", "0")
.build().execute(new StringCallback() {
@Override
public void onError(Call call, Exception e, int i) {
}
@Override
public void onResponse(String s, int i) {
Log.i( "ceshi: ",s);
}
});
}
log打印的内容:I/ceshi:: {"resultCode":-100,"resultMessage":"用户未登录"}
正在回答 回答被采纳积分+1
1、这里要注意,像用户名密码这种保密性比较高的,要选择post方式向服务器提交数据,post提交的数据不会像get那种把数据信息显示到url中。
2、登录成功后获取订单数据和登录的方式是一样的,只不过url为http://restaurant.t.imooc.io/basePro/order_find,参数为currentPage,值为0。再定义个计数变量,当用户选择类似下一页操作时,这个变量值++。
3、app中使用okhttp方式登录如果没有成功可以把代码贴出来,方便我们帮你查看问题。
- 参与学习 504 人
- 提交作业 1003 份
- 解答问题 1044 个
本专题是专为有Java语言基础想入坑Android开发的同学们准备的。从AndroidUI基础一直到网络,数据存储,一步到位入门Android开发。如果你会Java,那就不要犹豫了~ ~
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星