本次環境
- 后端
- MySql 5.7
- Java 1.8
- Maven 3.6.3
- 其余與博客項目相同
- Android端
- okHttp 4.9.3
- ADV API30
- Gradle 4.0.1
SpringBoot后台
項目來自前后端分離博客項目,順便記錄下自己運行項目的步驟
- 下載壓縮包直接用 idea open 項目文件
- 打開文件后可能 maven 還沒下載包,找到 pom.xml (在vueblog-java文件夾) 右鍵 找到 maven 點擊 add as maven
- 創建數據庫,找到sql文件並添加兩條語句,然后用 Navicat 執行 sql文件,這里的數據庫是5.7
- 找到 配置文件修改數據庫的地址或密碼。也是在這個文件看到數據庫的名稱為
vueblog
- 進入VueblogApplication 文件啟動后台
- 此時后台已經跑起來了,得運行前端了,在vueblog-vue文件夾右鍵選擇 open in terminal
- 運行
npm install
- 運行
npm install github-markdown-css
具體看前后端分離博客項目 - 運行
npm run serve
Android前端
package com.example.helloworld.okhttp_learn;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import com.example.helloworld.R;
import com.lzy.okgo.OkGo;
import com.lzy.okgo.callback.StringCallback;
import org.json.JSONArray;
import java.io.IOException;
import okhttp3.FormBody;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
public class OkhttpLearnActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_okhttp_learn);
final Button btnGetBlogs = findViewById(R.id.btn_okhttpLearn_getBlogs);
btnGetBlogs.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Android 4.0 之后不能在主線程中請求HTTP請求
new Thread(new Runnable(){
@Override
public void run() {
String json = "{\"username\":\"MarkerHub\",\"password\":\"111111\"}";
OkHttpClient client = new OkHttpClient();//創建Http客戶端
Request request = new Request.Builder()
.url("http://192.168.56.1:8081/login")//***.***.**.***為本機IP,xxxx為端口,/ / 為訪問的接口后綴
.post(RequestBody.create(MediaType.parse("application/json"),json))
.build();//創建Http請求
Log.d("test",json);
try {
Response response = client.newCall(request).execute();//執行發送的指令
Log.d("test", "response success");
final String responseData = response.body().string();//獲取返回的結果
Log.d("test",responseData);
} catch (IOException e) {
e.printStackTrace();
Log.d("test", "response failed");
}
}
}).start();
}
});
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".okhttp_learn.OkhttpLearnActivity">
<Button
android:id="@+id/btn_okhttpLearn_getBlogs"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="獲取數據"/>
</LinearLayout>
在AndroidManifest.xml中添加網絡請求的權限
<uses-permission android:name="android.permission.INTERNET" />
我出現的問題與解決方法
在端口測試工具中測試是正常的,顯示如下
但是會拋出異常,網上有說將http
改成https
,但依然會拋出異常
但其實在配置文件中添加一下語句即可,java.net.UnknownServiceException: CLEARTEXT communication to t.main.wedeep.com.cn not permitted by network security policy
android:usesCleartextTraffic="true"
最終成功運行