OkHttp登录

Bean类

public class User {
    private String msg;
    private String code;
    public String getMsg() {
        return msg;
    }
    public void setMsg(String msg) {
        this.msg = msg;
    }
    public String getCode() {
        return code;
    }
    public void setCode(String code) {
        this.code = code;
    }
}

DataCall

	public interface DataCall {
	    void loadSuccess(User data);
	}

工具类

public class HttpUtils {
    public static String get(String urlString){
        OkHttpClient okHttpClient = new OkHttpClient();
        Request request = new Request.Builder().url(urlString).get().build();
        try {
            Response response = okHttpClient.newCall(request).execute();
            return response.body().string();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return "";
    }
}

LoginModel

public class LoginModel {
    public static User Login(String model, String pwd){
        String data=HttpUtils.get("http://www.zhaoapi.cn/user/login?mobile="+model+"&password="+pwd);
        Gson gson=new Gson();
        User user = gson.fromJson(data, User.class);
        return user;

    }
}

LoginPresenter

public class LoginPresenter extends BasePresenter {
    public LoginPresenter(DataCall dataCall) {
        super(dataCall);
    }

    @Override
    public Object useMOdel(String... srgs) {
        return LoginModel.Login(srgs[0],srgs[1]);
    }
}

public abstract class BasePresenter {
    private DataCall call;
    public BasePresenter (DataCall dataCall){
        this.call=dataCall;
    }
	      private Handler mHandler=new Handler(){
	          @Override
	          public void handleMessage(Message msg) {
	              super.handleMessage(msg);
	              call.loadSuccess((User) msg.obj);
	          }
	      };
	    public void requst(final String...srgs){
	        new Thread(new Runnable() {
	            @Override
	            public void run() {
	                User user = (User) useMOdel(srgs);
	                Message message = mHandler.obtainMessage();
	                message.obj=user;
	                mHandler.sendMessage(message);
	            }
	        }).start();
	    }
	    public abstract Object useMOdel(String...srgs);
	}

MainActivity

   public class LoginActivity extends AppCompatActivity implements View.OnClickListener,DataCall {
    Button btnLogin;
    private LoginPresenter loginPresenter;
    private EditText ed_model,ed_pwd;
    private  Button btn_login;
    LoginPresenter loginPesenter = new LoginPresenter(this);

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        ed_model = findViewById(R.id.ed_model);
        ed_pwd = findViewById(R.id.ed_pwd);
        btn_login = findViewById(R.id.btn_login);
        btn_login.setOnClickListener(this);
    }
    @Override
    public void onClick(View view) {
        String mobile = ed_model.getText().toString();
        String password = ed_pwd.getText().toString();
        loginPesenter.requst(mobile,password);
    }
    @Override
    public void loadSuccess(User data) {
        Integer code = Integer.valueOf(data.getCode());
        Toast.makeText(this, data.getCode()+""+data.getMsg(), Toast.LENGTH_SHORT).show();
        if (code==0){
            Intent intent = new Intent(LoginActivity.this,MainActivity.class);
            startActivity(intent);
        }

    }
}

布局

LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/ed_model"
        android:hint="请输入用户名"/>
    EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/ed_pwd"
        android:hint="请输入密码"/>
    Button
        android:id="@+id/btn_login"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="登录"/>
LinearLayout>

依赖

implementation 'com.squareup.okhttp3:okhttp-ws:3.4.2'
OkHttp3是一个开源的HTTP客户端库,用于在Android和Java应用程序中进行网络请求。它提供了简单、高效和灵活的API,可以发送HTTP请求、处理响应和管理网络连接。 要使用OkHttp3登录Harbor,你需要进行以下步骤: 1. 创建OkHttpClient对象:首先,你需要创建一个OkHttpClient对象,它将用于发送HTTP请求。你可以使用默认配置创建一个简单的OkHttpClient对象,也可以根据需要进行自定义配置。 2. 创建Request对象:接下来,你需要创建一个Request对象,该对象包含登录Harbor所需的URL、请求方法(POST)、请求头和请求体等信息。在请求头中,你需要设置Content-Type为application/x-www-form-urlencoded,并在请求体中传递用户名和密码等登录信息。 3. 发送请求:使用OkHttpClient对象发送Request对象,获取到Response对象。你可以使用同步或异步方式发送请求,根据需要选择合适的方法。 4. 处理响应:从Response对象中获取响应数据,并根据需要进行处理。如果登录成功,你将会收到一个包含登录凭证的响应。 下面是一个示例代码,演示了如何使用OkHttp3登录Harbor: ```java import okhttp3.*; public class HarborLoginExample { public static void main(String[] args) throws Exception { // 创建OkHttpClient对象 OkHttpClient client = new OkHttpClient(); // 创建Request对象 RequestBody requestBody = new FormBody.Builder() .add("username", "your_username") .add("password", "your_password") .build(); Request request = new Request.Builder() .url("https://your_harbor_url/api/login") .post(requestBody) .addHeader("Content-Type", "application/x-www-form-urlencoded") .build(); // 发送请求 Response response = client.newCall(request).execute(); // 处理响应 if (response.isSuccessful()) { // 登录成功 String token = response.header("Authorization"); System.out.println("登录成功,Token: " + token); } else { // 登录失败 System.out.println("登录失败,错误码: " + response.code()); } // 关闭响应 response.close(); } } ``` 请注意,上述示例中的URL、用户名和密码等信息需要根据你的实际情况进行替换。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值