Okhttp类,封装方法
package com.example.httptest;import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;import androidx.annotation.NonNull;import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;import java.io.IOException;import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;public class Okhttp {private static final String TAG = "Okhttp";private Context context;//上下文环境private static final String DB_NAME = "Account.db";//数据库名private static final int DB_VERSION = 1;//数据库版本号private static final String TABLE_NAME = "User";//表名private Context mContext;// 列名称private static final String COLUMN_ID = "id";private static final String COLUMN_NAME = "name";private static final String COLUMN_PASSWORD = "password";private static final String COLUMN_MONEY = "money";private DBHelper mDBHelper;private SQLiteDatabase mSQLiteDatabase;private final OkHttpClient okHttpClient = new OkHttpClient();Account mAccount = new Account();//异步get请求 调用enqueue()方法,传入回调函数 查所有用户数据public void doGetAsync() {Request request = new Request.Builder().url("http://192.168.1.3:3000/Account/AddAccount").build();Call call = okHttpClient.newCall(request);call.enqueue(new Callback() {@Overridepublic void onFailure(@NonNull Call call, @NonNull IOException e) {Log.e(TAG, "失败");}@Overridepublic void onResponse(@NonNull Call call, @NonNull Response response) throws IOException {String string = response.body().string();/*Map<String, String> map = new HashMap<String, String>();map.put("username","username");map.put("password","password");map.put("money","money");map.put("id","id");JSONArray jsonArray = new JSONArray();jsonArray.add(map);JSONObject jsonObject = JSONObject.fromObject(map);*/// JSONArray jsonArray = new JSONArray(string);// JSONArray object = new JsonParse().parse(string).getAsJsonArray();JsonArray jsonArray = new JsonParser().parse(string).getAsJsonArray();// Gson gson = new Gson();
//Account account = new Account(1,"xiaoming","123",0.0);//String j = gson.toJson(string);// Account acc = gson.fromJson(string, Account.class);
//Log.e(TAG, String.valueOf(acc));//int v1 = acc.getId();//Log.e(TAG, String.valueOf(v1));}});}public void addAccountSQlite(JSONObject jsonObject) throws JSONException {SQLiteDatabase db = mDBHelper.getWritableDatabase();ContentValues contentValues = new ContentValues();contentValues.put("username", "1");//SQLiteDatabase db = helper.getReadableDatabase();// String sql = "insert into User values(" + id + ',' + name + ',' + pwd + ',' + 0.0 + ")";Log.e(TAG, jsonObject.getString("key1"));}public void doGetAccount() {Request request = new Request.Builder().url("http://192.168.1.3:3000/Account/GetAccount?username=XiaoMing").build();Call call = okHttpClient.newCall(request);call.enqueue(new Callback() {@Overridepublic void onFailure(@NonNull Call call, @NonNull IOException e) {Log.e(TAG, "失败");}@Overridepublic void onResponse(@NonNull Call call, @NonNull Response response) throws IOException {String string = response.body().string();Log.e(TAG, "成功 " + string);}});}//异步post请求 调用enqueue()方法,传入回调函数 新增用户public void doPostAsync() {RequestBody body = new FormBody.Builder()// FormBody formBody = new FormBody.Builder().add("username", "xiao9").add("password", "9").add("money", "9").add("id", "23").build();Request request = new Request.Builder().url("http://192.168.1.3:3000/Account/AddAccount").post(body).build();okHttpClient.newCall(request).enqueue(new Callback() {@Overridepublic void onFailure(@NonNull Call call, @NonNull IOException e) {Log.e(TAG, "失败");}@Overridepublic void onResponse(@NonNull Call call, @NonNull Response response) throws IOException {if (response.isSuccessful()) {Log.e(TAG, "成功");Log.e(TAG, "doPostAsync: " + response.body().string());}}});}
}
activity类
<?xml version="1.0" encoding="utf-8"?>
<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"tools:context=".MainActivity"android:orientation="vertical"android:gravity="center"android:layout_margin="10dp"><Buttonandroid:id="@+id/GetAllAccountGetbutton"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="GetAllAccount Get接口"android:textSize="25dp" /><Buttonandroid:id="@+id/GetAccountGetbutton"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="GetAccount Get接口"android:textSize="25dp"android:layout_marginTop="30dp"/><Buttonandroid:id="@+id/AddAccountPostbutton"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="AddAccount Post接口"android:textSize="25dp"android:layout_marginTop="30dp"/></LinearLayout>
MainActivity
package com.example.httptest;import static android.content.ContentValues.TAG;import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;import android.accounts.Account;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;import org.json.JSONArray;import java.io.IOException;
import java.util.ArrayList;public class MainActivity extends AppCompatActivity {ArrayList<Account> mAccounts = new ArrayList<>();private Button mGetAllAccountGetbutton;private Button mGetAccountGetbutton;private Button mAddAccountPostbutton;private Okhttp mOkhttp = new Okhttp();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mGetAllAccountGetbutton = findViewById(R.id.GetAllAccountGetbutton);mGetAllAccountGetbutton.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {mOkhttp.doGetAsync();}});mAddAccountPostbutton = findViewById(R.id.AddAccountPostbutton);mAddAccountPostbutton.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {mOkhttp.doPostAsync();}});mGetAccountGetbutton = findViewById(R.id.GetAccountGetbutton);mGetAccountGetbutton.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {mOkhttp.doGetAccount();}});}
}