Okhttp
使用OKhttp3网络框架发送post网络请求并返回token OKHttp是一个当前主流的网络请求的开源框架,PUT,DELETE,POST,GET等请求,文件的上传下载,加载图片(内部会图片大小自动压缩),支持请求回调,直接返回对象、对象集合,支持session的保持
sharedpreference
Android平台为我们提供了一个SharedPreferences接口,它是一个轻量级的存储类 mode指定为MODE_PRIVATE,则该配置文件只能被自己的应用程序访问。 mode指定为MODE_WORLD_READABLE,则该配置文件除了自己访问外还可以被其它应该程序读取。 mode指定为MODE_WORLD_WRITEABLE,则该配置文件除了自己访问外还可以被其它应该程序读取和写入
实现步骤
1、在build.gradle 和 配置文件分别加上依赖 和 网络权限 2、创建OkHttpClient对象 3、通过Builder模式创建Request对象,参数必须有个url参数,可以通过Request.Builder设置更多的参数比如:header、method等 通过request的对象去构造得到一个Call对象,Call对象有execute()和cancel()等方法。 4、以异步的方式去执行请求,调用的是call.enqueue,将call加入调度队列,任务执行完成会在Callback中得到结果。 5、用sharedpreference保存返回的token,为了写shared preferences文件,需要通过执行edit()创建一个 SharedPreferences.Editor。通过putString()等方法传递keys与values,接着通过commit() 提交改变.
public void LoginPost(View view){
if(usernameEditText.getText()==null || "".contentEquals(usernameEditText.getText())){
Toast.makeText(LoginActivity.this,"账号为空!",Toast.LENGTH_SHORT).show();
}else if(passwordEditText.getText()==null || "".contentEquals(passwordEditText.getText())){
Toast.makeText(LoginActivity.this,"密码为空!",Toast.LENGTH_SHORT).show();
}
String username = usernameEditText.getText().toString().trim();
String password = passwordEditText.getText().toString().trim();
User user = new User(username,password);
OkHttpClient client = new OkHttpClient();
Gson gson = new Gson();
String user1 = gson.toJson(user);
final MediaType JSON = MediaType.parse("application/json; charset=utf-8");
RequestBody body = RequestBody.create(JSON,user1);
String url = "http://43.138.24.19:8080/user/login";
final Request request =
new Request.Builder()
.url(url).post(body).build();
Call call = client.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(@NotNull Call call, @NotNull IOException e) {
Log.v("loginActivity", "");
System.out.println(e);
}
@Override
public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException {
final String msg = response.body().string();
String token = response.headers().get("token");
editor.putString("token",token);
editor.apply();
runOnUiThread(new Runnable() {
@Override
public void run() {
Log.v("loginActivity", msg);
Intent intent = new Intent(LoginActivity.this, SlideActivity.class);
startActivity(intent);
}
});
}
});
}
登录成功返回200并保存token
|