这是一个小小的登录案例是基于https的小demo,希望可以对各位同胞有所帮助!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
下面上代码
首先是一个工具类多一些功能进行了封装
public class HttpUtils { OkHttpClient client = getUnsafeOkHttpClient(); public static final MediaType JSON = MediaType.parse("application/json; charset=utf-8"); public String login(String url, String json) throws IOException { //把请求的内容字符串转换为json RequestBody body = RequestBody.create(JSON, json); Request request = new Request.Builder() .url(url) .post(body) .build(); Response response = client.newCall(request).execute(); String result = response.body().string(); return result; } public String bolwingJson(String username, String password) { return "{'username':" + username + "," + "'password':" + password + "}"; } public static OkHttpClient getUnsafeOkHttpClient() { try { final TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager() { @Override public void checkClientTrusted(X509Certificate[] chain, String authType) { } @Override public void checkServerTrusted(X509Certificate[] chain, String authType) { } @Override public X509Certificate[] getAcceptedIssuers() { X509Certificate[] x509Certificates = new X509Certificate[0]; return x509Certificates; } }}; final SSLContext sslContext = SSLContext.getInstance("SSL"); sslContext.init(null, trustAllCerts, new java.security.SecureRandom()); OkHttpClient okHttpClient = new OkHttpClient.Builder() .sslSocketFactory(sslContext.getSocketFactory()) .hostnameVerifier(new HostnameVerifier() {@Override public boolean verify(String hostname, SSLSession session) { return true; } }) .build(); return okHttpClient; } catch (Exception e) { throw new RuntimeException(e); } }}
主代码如下
public class MainActivity extends AppCompatActivity implements View.OnClickListener { private static final String TAG ="MainActivity" ; //用户名 private EditText mEtUsername; //密码 private EditText mEtPwd; //登录按键 private Button mBtnLogin; private String url ="https://i171635h39.51mypc.cn:35689/jeesite/a/login"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); initListener(); } /** * 初始化组件 */ private void initView() { mEtUsername = (EditText) findViewById(R.id.login_edit_account); mEtPwd = (EditText) findViewById(R.id.login_edit_pwd); mBtnLogin = (Button) findViewById(R.id.login_btn_login); } /** * 设置监听器 */ private void initListener() { mBtnLogin.setOnClickListener(this); } /* 单击事件监听 */ @Override public void onClick(View v) { if(v==mBtnLogin){ login(); } } /* 登录 */ private void login() { final String username = mEtUsername.getText().toString().trim(); final String password = mEtPwd.getText().toString().trim(); if(TextUtils.isEmpty(username) || TextUtils.isEmpty(password)){ Toast.makeText(MainActivity.this, "用户名或者密码不能为空", Toast.LENGTH_SHORT).show(); return; } new Thread(){ @Override public void run() { HttpUtils httpUtils = new HttpUtils(); //转换为JSON String user = httpUtils.bolwingJson(username, password); //String user ="{'username':" + username + ","+"'password':"+password+"}"; Log.d(TAG, "user:" + user); try { final String result = httpUtils.login(url, user); Log.d(TAG, "结果:" + result); //更新UI,在UI线程中 runOnUiThread(new Runnable() { @Override public void run() { if("SUCCESS".equals(result)){ Toast.makeText(MainActivity.this, "登录成功", Toast.LENGTH_SHORT).show(); }else{ Toast.makeText(MainActivity.this, "登录失败", Toast.LENGTH_SHORT).show(); } } }); } catch (IOException e) { e.printStackTrace(); } } }.start(); } }