关于retrofit如何移动端服务端实现交互

一、retrofit推荐博客
1、这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解)
2、Android:手把手带你深入剖析 Retrofit 2.0 源码
3、安卓Retrofit的基本操作
4、关于okhttp3网络框架的onfailure错误
二、具体交互实现(以实现注册功能为例)

  • 步骤一
    创建JavaBean类,根据服务端所给的Gson格式,例如:
{
    
    
    "userName": "",
    "userPhoneNumber": "",
    "userPassword": ""
}

创建对应的Bean类,这个类是用于向服务端传递数据,一般命名:功能名+Request

public class RegisterRequest {
    
    
    /** alt + S
     * userName :
     * userPhoneNumber :
     * userPassword :
     */
    private String userName;
    private String userPhoneNumber;
    private String userPassword;
	......
}
  • 步骤二
    为交互提供响应的接口
public interface IApi {
    
    
    //注册接口
    @Headers("Content-Type:application/json")//只有你要了json就是这个格式,死规定
    @POST("/user/register")//跟服务器有关
    Call<ResponseBody> register(@Body RegisterRequest body);
    //死规定            自己命名  接口名   Bean类       自己命名
}
  • 步骤三
    创建Retrofit的对象
   RegisterRequest registerRequest = new RegisterRequest(username,telephone,password);
   Retrofit retrofit = new Retrofit.Builder().baseUrl("http://liuying.free.idcfengye.com/") // 设置 网络请求 Url
                        .addConverterFactory(GsonConverterFactory.create()) //设置使用Gson解析(记得加入依赖)
                        .build();
  • 步骤四
    创建 网络请求接口 的实例
   IApi iApi = retrofit.create(IApi.class);
  • 步骤五
    返回服务端发回的内容
    根据Gson格式:
{
    
    
    "code": 200,
    "message": "成功",
    "data": "2021-02-11T10:22:19.226+00:00"
}

创建对应的Bean类,这个类是用于存储服务端传递的数据,一般命名:功能名+Result

public class RegisterResult {
    
    
    /**
     * code : 200
     * message : 成功
     * data : 2021-02-11T10:22:19.226+00:00
     */
    private Integer code;
    private String message;
    private String data;
}
  • 步骤六
    发送网络请求
 Call<ResponseBody> call = iApi.register(registerRequest); //对 发送请求 进行封装(设置需要翻译的内容)
 call.enqueue(new Callback<ResponseBody>() {
    
    
       @Override
       public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
    
    //说明他连上网了  只要网络没问题都能连上
       		//response一般返回的是服务端json格式的数据
       		if(response.code() == HttpURLConnection.HTTP_OK){
    
    //服务端 返回404.  常识中的连上  不是200说明对接方法有问题
        		    Gson gson = new Gson();
       		        RegisterResult registerResult;
      		 		try {
    
    
       	     			String temp = response.body().string();
    		        	registerResult = gson.fromJson(temp, RegisterResult.class); //服务端主动发送的东西
   		    		} catch (Exception e) {
    
    
        		    	e.printStackTrace();
		       		}
       				Toast.makeText(RegisterActivity.this,"注册成功",Toast.LENGTH_SHORT).show();
  		     		Intent intent = new Intent(RegisterActivity.this, LoginActivity.class);
      		       	startActivity(intent);
 		    }else{
    
    
		            Toast.makeText(RegisterActivity.this,"注册失败",Toast.LENGTH_SHORT).show();
	        }
	   }
       @Override
             public void onFailure(Call<ResponseBody> call, Throwable t) {
    
    
                    Toast.makeText(RegisterActivity.this,"注册失败",Toast.LENGTH_SHORT).show();
             }
       });
  • 步骤七
    解决非安全连接设置
    首先,在res/xml下建立我们自己的network security config文件,名字任意,可以叫做network_security_config.xml。在这里插入图片描述
    然后在里面设置
<network-security-config>
     <!--默认允许所有网址使用非安全连接-->
    <base-config cleartextTrafficPermitted="true" />
</network-security-config>

最后在AndroidManifest.xml里加一段代码

 <application
        android:networkSecurityConfig="@xml/network_security_config"
        android:allowBackup="true"
        ...........
 </application>

猜你喜欢

转载自blog.csdn.net/Cristiano_san/article/details/113807512