1. 程式人生 > >Android與JavaWeb伺服器互動教程(3)-一個簡單的Android專案

Android與JavaWeb伺服器互動教程(3)-一個簡單的Android專案

1.前言

是時候該寫Android端了。。。

2.建立專案

3.匯入xUtils3框架

送上xUtil3框架的傳送門
附上jar包的下載地址:
百度雲
七牛雲
以及json的下載地址
七牛雲
百度雲
把jar包拷入libs

新增引用



4.編寫程式碼

4.1 新增許可權

xUtil3框架需要新增許可權才能正常使用
需要新增一下許可權:

<uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name
="android.permission.WRITE_EXTERNAL_STORAGE" />

4.2 新增基礎類

在 src/main/jaba/com.imudges.app.androidclient 下新增一個BaseActivity
程式碼如下:

package com.imudges.app.androidclient;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import org.xutils.x;

/**
 * Created by HUPENG on 2017/4/30.
 */
public class BaseActivity extends AppCompatActivity{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); x.view().inject(this); } }

4.3 修改登入介面資原始檔

activity_login.xml 檔案位於app/src/main/res/layout/app/src/main/res/layout/
修改之後:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:weightSum="1" android:gravity="center"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/et_username" android:hint="使用者名稱" android:imeOptions="actionDone" android:text="" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:paddingBottom="10dp"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" /> <EditText android:id="@+id/et_password" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="密碼" android:inputType="textPassword" android:imeOptions="actionDone" android:text="" /> </LinearLayout> <Button android:id="@+id/btn_login" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="登入" android:layout_weight="0.01" android:textColor="#ffffff" android:textSize="17dp" /> </LinearLayout>

4.4 完成登入介面邏輯

注意,伺服器的地址要改成你自己的伺服器的地址

package com.imudges.app.androidclient;



import android.os.Bundle;
import android.view.View;
import android.widget.EditText;

import android.widget.Toast;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import org.xutils.common.Callback;
import org.xutils.http.RequestParams;
import org.xutils.view.annotation.ContentView;
import org.xutils.view.annotation.Event;
import org.xutils.view.annotation.ViewInject;
import org.xutils.x;

@ContentView(R.layout.activity_login)
public class LoginActivity extends BaseActivity {
    @ViewInject(R.id.et_username)
    private EditText etUsername;
    @ViewInject(R.id.et_password)
    private EditText etPassword;



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Event(value = R.id.btn_login,type = View.OnClickListener.class)
    private void onLoginBtnClick(View view){
        /**
         * 這裡填寫你的伺服器所在的IP地址替換我的ip地址
         * */
        try{
            RequestParams params = new RequestParams("http://183.175.12.160:8899/login.action");
            params.addQueryStringParameter("username",etUsername.getText().toString());
            params.addQueryStringParameter("password",etPassword.getText().toString());
            x.http().get(params, new Callback.CommonCallback<String>() {
                @Override
                public void onSuccess(String s) {
                    JsonParser jsonParser = new JsonParser();
                    JsonObject jsonObject = (JsonObject) jsonParser.parse(s);
                    int code = jsonObject.get("code").getAsInt();
                    if (code == 0){
                        //執行登入成功操作
                        Toast.makeText(LoginActivity.this,jsonObject.get("msg").getAsString(),Toast.LENGTH_SHORT).show();
                    }else {
                        //執行登入失敗操作
                        Toast.makeText(LoginActivity.this,jsonObject.get("msg").getAsString(),Toast.LENGTH_SHORT).show();
                    }
                }

                @Override
                public void onError(Throwable throwable, boolean b) {

                }

                @Override
                public void onCancelled(CancelledException e) {

                }

                @Override
                public void onFinished() {

                }
            });
        }catch (Exception e){
            e.printStackTrace();
        }

    }

}

4.5 在包下新建MyApplication

package com.imudges.app.androidclient;

import android.app.Application;
import org.xutils.x;

/**
 * Created by HUPENG on 2017/4/30.
 */
/**
 * Created by yangyang on 2017/4/24.
 */
public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        x.Ext.init(this);//Xutils初始化
        x.Ext.setDebug(BuildConfig.DEBUG); // 是否輸出debug日誌, 開啟debug會影響效能.
    }
}

在清單檔案中配置Application

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.imudges.app.androidclient">

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:supportsRtl="true"
            android:theme="@style/AppTheme"
            android:name=".MyApplication">
        <activity android:name=".LoginActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>

                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
    </application>

</manifest>


下面就可以跑了~~~

最後附上專案原始碼:
七牛雲
百度雲