安卓学习----使用okHttp(POST方式)---登录

工具类

package com.liunan.okhttpdemo3post.Utils;

import java.io.IOException;

import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
import okhttp3.ResponseBody;

/**
 * Created by Administrator on 2016-03-27.
 */
public class HttpUtils {

    OkHttpClient client = new OkHttpClient();
    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);
        //RequestBody formBody = new FormEncodingBuilder()

        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 + "}";
        //     "{‘username‘:" + username + ","+"‘password‘:"+password+"}";
    }

}

Activity

package com.liunan.okhttpdemo3post;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import com.liunan.okhttpdemo3post.Utils.HttpUtils;

import org.w3c.dom.Text;

import java.io.IOException;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    private static final String TAG ="MainActivity" ;
    //用户名
    private EditText mEtUsername;
    //密码
    private EditText mEtPwd;
    //登录按键
    private Button mBtnLogin;
    private TextView mTvResult;

    private String url ="http://192.168.1.102:8080/Login/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_et_name);
        mEtPwd = (EditText) findViewById(R.id.login_et_pwd);

        mBtnLogin = (Button) findViewById(R.id.login_btn_login);

        mTvResult = (TextView) findViewById(R.id.login_tv_result);

    }

    /**
     * 设置监听器
     */
    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)){

                                mTvResult.setText("登录成功");

                            }else{
                                mTvResult.setText("登录失败");
                            }
                        }
                    });
                } catch (IOException e) {
                    e.printStackTrace();
                }

            }
        }.start();

    }
}
时间: 2024-10-05 00:25:05

安卓学习----使用okHttp(POST方式)---登录的相关文章

安卓学习-界面-布局-RelativeLayout

RelativeLayout相对布局,所有内部的组件都是相对的 XML属性 XML属性 函数 说明 android:gravity setGravity 内部组件的对其方式 android:ignoreGravity setIgnoreGravity 设置哪个组件不受Gravity影响 RelativeLayout.LayoutParams用来设置内部组件的对齐方式 XML属性 说明 android:layout_centerHorizontal 水平居中 android:layout_cent

安卓学习第三课——常见布局

1.相对布局 简单的说,就是通过描述每个组件所在的位置,使用的layout_below等,就是控制组件与组件之间的位置关系. 2.绝对布局 就是通过描述他的x,y坐标来确定位置 3.线性布局 有两种是水平和竖直对其方式,一般情况下整体会使用线性布局,来排列众多的组件 3.帧布局 我感觉就是一层一层的,默认的情况下,多个组件是在同一个位置,所以你需要去修改位置.同时可以选择是否显示. 这可以用来描述视频播放器暂停键的控制方法. 代码如下. <?xml version="1.0" e

[安卓学习]AndroidManifest.xml文件内容详解

一,重要性 AndroidManifest.xml是Android应用程序中最重要的文件之一.它是Android程序的全局配置文件,是每个 android程序中必须的文件.它位于我们开发的应用程序的根目录下,描述了package中的全局数据,包括package中暴露的组件 (activities, services, 等等),以及他们各自的实现类,各种能被处理的数据和启动位置等重要信息. 因此,该文件提供了Android系统所需要的关于该应用程序的必要信息,即在该应用程序的任何代码运行之前系统所

Linux学习之CentOS(二)----远程登录管理工具SecureCRT的使用

[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/3919940.html 联系方式:[email protected] [正文] 虚拟机版本:VMware Workstation_10.0.3 Linux系统版本:CentOS_6.5(64位) 一.前言: 前几天做了一回小白,安装了上个月发布的最新版CentOS 7 ,发现在学习的时候有很多地方和

安卓学习-界面-布局-LinearLayout

1.常用的xml属性 XML属性 相关方法 说明 android:baselineAligned setBaselineAligned 看不懂什么意思,这个是网上的解释 设置为False将阻止该布局管理器于他的子元素基线对其  android:divider setDividerDrawable(Drawable divider) LinearLayout好像没效果 设置垂直布局时2个按钮之间的分隔线 android:gravity setGravity 组件内部的对齐方式,有如下几种 top

安卓学习第13课——BaseAdapter

BaseAdapter创建这么一个对象,需要些四个方法. int getCount(); Object getItem(int position); long getItemId(int position);View getView(int position, View convertView, ViewGroup parent);(1)列表中的项数(2)返回值的列表内容(3)获得postion处的列表项的ID(4)该列表项里的组件 package com.example.baseadapter

SecurceCRT通过密钥方式登录Linux服务器

这里采用密钥密钥方式登录Linux服务器,而传统的密码认证方式存在很多方面的不足,如暴力破解.密码泄露.密码遗忘和密码复杂度大等问题会给运维工作带来一定的负担,采用密钥认证方式在一定程度上可以缓解或者解决密码认证的安全问题. 实验环境:192.168.2.11 CentOS release 6.4 (Final) SecureCRT and SecureFX 7.0 x86 1.创建SSH2密钥对. 2.密钥生成向导,直接下一步即可. 3.采用RSA密钥类型 4.生成保护设定的加密密钥的通行短语

深入浅出安卓学习相关知识,如何从零学好移动开发

原文发表自我的个人主页,欢迎大家访问 http://purplesword.info/mobile-develop 由于近几年来互联网的飞速发展,安卓和iOS平台的大量普及推广,移动开发在当前是非常热门的一个方向. 有不少同学问我如何学习安卓,要学些什么,难不难学.之前一直没有想好应该怎么回答这个问题,只是简单的说安卓自身门槛不高,并不难学.因为我觉得准确回答一个类似这样的问题往往需要灵感.现在根据我的学习体验,做个大概的总结. 1.我为什么学安卓 我从刚开始接触安卓开发到现在也有两三年的时间了

安卓,采用最简单易懂的方式实现上拉刷新下拉加载更多

<!-- Description:上拉刷新,下拉加载更多是现在最流行的手势操作,但是对于初学者来说,在实现上是有一定难度的, 网上很多教程讲的都过于复杂,对于初学者无法起到引导作用,特此写本文,帮助安卓新手入门理解此, 还有最为重要的一点:本文只帮助你理解,并不是想你成为代码搬运工!别被那么多代码吓到了, 其中很多都是注释,仔细看注释对你理解有很大的帮助 Author:Booker L Date:2014-05-16 --> 一,事先准备: 实现该功能,最基本的需要两个东西,一个是OnTouc