安卓端和后端数据交互之OkHttp3的使用

  • 接触安卓也有一段时间了。无论前后端数据交互,还是安卓端和后端的数据交互都是一样的道理。最基础的发送json,解析json。
一、最先接触到就是okhttp,今天抽个时间来总结一下okhttp的使用吧。盗用一下网上的介绍(手动滑稽)
  • okhttp简介:
  • HTTP是现代应用常用的一种交换数据和媒体的网络方式,高效地使用HTTP能让资源加载更快,节省带宽。OkHttp是一个高效的HTTP客户端,它有以下默认特性:
  • 支持HTTP/2,允许所有同一个主机地址的请求共享同一个socket连接
  • 连接池减少请求延时
  • 透明的GZIP压缩减少响应数据的大小
  • 缓存响应内容,避免一些完全重复的请求
二、直接上实例吧,能跑才是硬道理!
  • 1、在build.gradle的dependencies 里面添加依赖,这个也相当于maven一样了,或者直接implement也行:
	dependencies {
	   api 'com.squareup.okhttp3:okhttp:3.14.0'
	}
  • 2、在主AndriodMainfest.xml里面添加权限,不然会各种被拦。
    <uses-permission android:name="android.permission.INTERNET" />
  • 3、数据交互无非就是post和get了。我就写写我的代码吧。写法各不相同。仅供参考。一般都需要开启单独的线程才可访问。安卓端对线程调用不好,程序马上罢工。
  • GET的方法,只需传入所需调用的地址和接口组成的url即可,无参访问接口。
	public static String get(String url) {
	        Request request = new Request.Builder().url(url).build();
	        try {
	            Response response = okHttpClient.newCall(request).execute();
	            if (response.isSuccessful()) {
	                String result = response.body().string();
	                Log.d("success", result.toString());
	                return result;
	            }
	        } catch (Exception e) {
	            e.printStackTrace();
	        }
	        Log.d("fail", "返回参数为空 !");
	        return null;
	    }

GET的调用方法:

		new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    String result = CommonCode.get(requestURL);
                  	//此处根据需要对返回的json字符串进行处理解析。
                } catch (Exception e) {
                    Log.d("failure", "run: " + e.toString());
                }
            }
        }).start();
  • POST的方法,只需传入所需调用的地址和接口组成的url和所要提交的对象参数包。都是封装好的方法,直接调用即可。
	static String post(JSONObject param, String url){
        RequestBody requestBody = FormBody.create(MediaType.parse("application/json; charset=utf-8"), param.toString());
        try{
            Request request = new Request.Builder().url(url).post(requestBody).build();
            try (Response response = okHttpClient.newCall(request).execute()) {
                String result = response.body().string();
                if (null == result || "".equals(result)){
                    throw new Exception("返回了一个空值!");
                }
                return result;
            }catch (Exception e){
                throw e;
            }
        }catch (Exception e){
            Log.d(TAG, "post: post请求失败:" + e);
            String result = "{'flag':0,'message':'" + e.toString() + "'}";
            return result;
        }
  	  }

POST的调用方法:

	new Thread(new Runnable() {
	        @Override
	         public void run() {
	             JSONObject param = new JSONObject();
	             try {
	                 param.put(key, vanlue);        //挨个put你的参数      
	                 String result = CommonCode.post(param, serverAddress);
	             } catch (Exception e) {
	                 Log.d("failure", "run: " + e.toString());
	             }
	         }
	     }).start();
三、讲了post和get的方法,来几个额外封装方法,让我们获取数据更加简便吧。手动滑稽!
  • 直接获取jsonArray吧,在post和get的类里面加个这。
public static JSONArray postGetJsonArray(JSONObject param, String url) {
        String resultstr = post(param,url);
        JSONArray result = JSONArray.parseArray(resultstr);
        return result;
    }
  • 再来个直接解析result的方法。
 public static JSONObject postGetJson(JSONObject param, String url) {
        String resultstr = post(param,url);
        try{
            JSONObject result = JSONObject.parseObject(resultstr);
            return result;
        }catch (Exception e){
            JSONObject failed = new JSONObject();
            failed.put(Constants.Param.RESULT_FLAG,0);
            failed.put(Constants.Param.RESULT_MESSAGE,e.toString());
            return failed;
        }
    }
  • 以上是本人写的参考网上okhttp3使用,写的post和get方法。网上还有说同步异步操作的,由于技术尚浅未能领悟其中真谛。对于安卓确实是菜的扣jio 。项目中这两个方法足以应对所有数据交互了,姑且当个笔记记录一下吧,望后来的大佬指点一二。学术尚浅,如有贻误,还望指正,谢谢!()
使用 OkHttp 库实现 Android 与 Spring Boot 的前后端交互可以分为以下步骤: 1. 添加 OkHttp 库依赖 在 Android 项目的 build.gradle 文件中添加 OkHttp 库的依赖: ``` dependencies { implementation 'com.squareup.okhttp3:okhttp:4.9.0' } ``` 2. 在 Android 中发送请求 在 Android 中使用 OkHttp 发送请求的代码如下: ``` OkHttpClient client = new OkHttpClient(); String url = "http://localhost:8080/api/user"; // Spring Boot 后端接口地址 Request request = new Request.Builder() .url(url) .build(); try (Response response = client.newCall(request).execute()) { String responseData = response.body().string(); // 处理响应数据 } catch (IOException e) { e.printStackTrace(); } ``` 以上代码中,我们创建了一个 OkHttpClient 对象,并指定了 Spring Boot 接口的地址和请求方式,然后使用 client.newCall(request).execute() 发送请求并获取响应数据。 3. 在 Spring Boot 中接收请求 在 Spring Boot 中,我们需要编写接口来接收 Android 发送的请求。示例代码如下: ``` @RestController @RequestMapping("/api") public class UserController { @GetMapping("/user") public User getUser() { // 业务处理 return new User(); } } ``` 以上代码中,我们使用 @RestController 和 @RequestMapping 注解来定义一个接口,然后在接口中处理业务逻辑,最后返回一个 User 对象。 4. 在 Android 中处理响应数据 在 Android 中,我们可以在 try 代码块中通过 response.body().string() 获取到响应数据,然后对数据进行处理。例如,我们可以将响应数据解析成 JSON 格式并显示在界面上: ``` try (Response response = client.newCall(request).execute()) { String responseData = response.body().string(); JSONObject jsonObject = new JSONObject(responseData); String username = jsonObject.getString("username"); String email = jsonObject.getString("email"); // 将数据显示在界面上 } catch (IOException | JSONException e) { e.printStackTrace(); } ``` 以上代码中,我们使用 JSONObject 类将响应数据解析成 JSON 格式,并从中获取到 username 和 email 的值,最后将这些值显示在界面上。 至此,我们就完成了 Android 和 Spring Boot 的前后端交互
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

private_static

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值