Répertoire d'articles
1. Description environnementale
1. Introduisez des dépendances dans gradle
implementation 'com.squareup.okhttp3:okhttp:3.12.1'
debugImplementation 'com.squareup.okhttp3:logging-interceptor:3.12.1'
2. Activez les autorisations réseau dans AndroidManifest
<uses-permission android:name="android.permission.INTERNET"/>
Remarque:
Après android9.0, Android interdit l'utilisation du protocole Http par défaut, et le protocole Https doit être utilisé, sinon une erreur sera signalée.
Par conséquent, la demande d'utilisation du protocole Http doit ajouter des attributs dans AndroidManifest, android: usesCleartextTraffic = "true"
3. Créez une interface de test
package com.icodingzy.androidback.controller;
import com.icodingzy.androidback.pojo.User;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("user")
public class UserController {
/**
* GET NoParameter
* @return
*/
@GetMapping("getUser")
public Object getUser() {
User user = new User();
user.setId((int) (Math.random()*100));
user.setName("熊顺");
user.setStudentId("201815110110" + (int) (Math.random()*100));
user.setSex("男");
user.setData("Not have Parameter!");
return user;
}
/**
* GET TakeParameter
* @param id userId
* @return
*/
@GetMapping("getParamUser")
public Object getParamUser(Integer id){
User user = new User();
user.setId(id);
user.setName("熊顺");
user.setStudentId("201815110110" + (int) (Math.random()*100));
user.setSex("男");
user.setData("parameter is " + id);
return user;
}
/**
* Post NoParameter
* @return
*/
@PostMapping("postNoParamUser")
public Object postNoParamUser(){
User user = new User();
user.setId((int) (Math.random()*100));
user.setName("熊顺");
user.setStudentId("201815110110" + (int) (Math.random()*100));
user.setSex("男");
user.setData("Not have parameter");
return user;
}
/**
* Post TakeParameter
* @param id userId
* @return
*/
@PostMapping("postParamUser")
public Object postParamUser(Integer id){
User user = new User();
user.setId(id);
user.setName("熊顺");
user.setStudentId("201815110110" + (int) (Math.random()*100));
user.setSex("男");
user.setData("parameter is " + id);
return user;
}
/**
* Post ObjectParameter
* @return
*/
@PostMapping("postObjectParamUser")
public Object postObjectParamUser(@RequestBody User user){
return user;
}
}
Documentation de l'interface
La description | Méthode de demande | Paramètre de demande | Demande d'adresse |
---|---|---|---|
Méthode GET, pas de paramètres | AVOIR | non | / user / getUser |
Méthode GET, paramètre Int | AVOIR | Int (id) | / user / getParamUser |
Méthode de publication, pas de paramètres | PUBLIER | non | / user / postNoParamUser |
Post méthode, avec paramètres | PUBLIER | Int (id) | / user / postParamUser |
Post méthode, paramètres Jsonized | PUBLIER | Objet (id , nom , sexe , studentId , sexe , données) | / user / postObjectParamUser |
4. Ecrire la classe d'outils OkHttp
package com.zhuoyue.travelwh.OkHttpUtil;
import android.app.ProgressDialog;
import android.content.Context;
import android.util.Log;
import com.zhuoyue.travelwh.bean.MsgBean;
import org.greenrobot.eventbus.EventBus;
import java.io.IOException;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
public class OkHttpUtil {
public static ProgressDialog dialog;
/**
* 发送网络请求
* @param url 请求Url
* @param context 上下文对象
* @param body 请求体,如果有请求体则发送Post请求,反之发送Get请求
*/
public static void getHttpRequset(String url, Context context, RequestBody body) {
startDialog(context);
OkHttpClient client = new OkHttpClient();
Request request = null;
//Post请求
if (body != null) {
request = new Request.Builder()
.url(url)
.post(body)
.build();
} else {
//Get请求
request = new Request.Builder()
.url(url)
.get()
.build();
}
client.newCall(request).enqueue(new Callback() {
/*请求失败时的回调*/
@Override
public void onFailure(Call call, IOException e) {
stopDialog();
Log.e("onFailure: ", e.getMessage());
}
/*请求成功时的回调*/
@Override
public void onResponse(Call call, Response response) throws IOException {
stopDialog();
Log.e("ApiData:", response.body().string());
}
});
}
/**
* 显示等待框
* @param context
*/
public static void startDialog(Context context) {
dialog = new ProgressDialog(context);
dialog.setMessage("数据加载。。。");
dialog.setTitle("请稍后");
dialog.setCanceledOnTouchOutside(false);
dialog.show();
}
/**
* 关闭等待框
*/
public static void stopDialog() {
if (dialog != null) {
dialog.dismiss();
}
}
}
Deux, envoyez la demande
1. Envoyez une demande Get sans paramètres
Utilisez des classes d'outils pour envoyer des requêtes réseau dans votre propre entreprise
//无参接口
private final String url = "http://xxxxxx/user/getParamUser";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
OkHttpUtil.getHttpRequset(url,this,null);
}
Le résultat de l'impression est le suivant
E / ApiData :: {"id": 82, "name": "熊 顺", "studentId": "20181511011066", "sex": "男", "data": "Not have Parameter!" }
2. Envoyez une demande Get avec des paramètres
Lorsque OkHttp envoie une requête Get, tous les paramètres de la requête sont placés dans l'url
//有参Get接口
private final String url = "http://xxxxxx/user/getParamUser";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
OkHttpUtil.getHttpRequset(url + "?id=9999",this,null);
}
3. Envoyez une demande de publication sans paramètres
Vous devez apporter le corps de la demande lors de l'envoi d'une demande de publication
//无参Post接口
private final String url = "http://xxxxxx/user/postNoParamUser";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
RequestBody body = new FormBody.Builder()
.build();
OkHttpUtil.getHttpRequset(url, this, body);
}
4. Envoyez une demande de position avec participation
Correction dans l'ajout en tant que type de chaîne
//有参Post接口
private final String url = "http://xxxxxx/user/postParamUser";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
RequestBody body = new FormBody.Builder()
.add("id","8888")
.build();
OkHttpUtil.getHttpRequset(url, this, body);
}
5. Envoyer les données Json de Post
L'envoi de données Json nécessite l'aide de JSONObject pour convertir les données au format Json
//Json化参数Post接口
private final String url = "http://xxxxxx/user/postObjectParamUser";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
JSONObject jsonObject = new JSONObject();
try {
jsonObject.put("id",1111111);
jsonObject.put("name","顺");
jsonObject.put("studentId","123123");
jsonObject.put("sex","小萌新");
jsonObject.put("data","I have pan");
} catch (JSONException e) {
e.printStackTrace();
}
RequestBody body = FormBody.create(MediaType.parse("application/json;charset=utf-8"), jsonObject.toString());
OkHttpUtil.getHttpRequset(url, this, body);
}