只写Get请求的原因是我就用到了这个,剩下的用到了再补
首先项目结构里添加一下依赖
新建接口:
package ***; import retrofit2.Call; import retrofit2.http.GET; import retrofit2.http.Path; public interface TestService { @GET("/api/home/MethodName") Call<Reception> API_A(@Query("param1") String param1,@Query("param2") String param2); // @GET注解的作用:采用Get方法发送网络请求,这么写下来最后框架能自动生成/api/home/MethodName?param1=***¶m2=***的地址 // 其中返回类型为Call<*>,*是接收数据的类 // 如果想直接获得Responsebody中的内容,可以定义网络请求返回值为Call<ResponseBody> @GET("/api/PDAInterface/{method}/{param1}/{param2}") Call<Reception> API_B(@Path("method") String method,@Path("param1") String param1,@Path("param2") String param2); // 这里怎么写都可以,只要和后端那里能对上就行 }
新建接收回应的类,要根据返回的信息结构对应着写
package ***; import java.util.ArrayList; import java.util.List; public class Reception { private int code; private String message; private String[] data; public String[] getData(){ return data; } }
新建Retrofit封装的类
public class GetResult extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); request(); //使用Retrofit封装的方法 } public String[] data; public String param1 = null; public String param2 = null; private OkHttpClient.Builder getClient(){ OkHttpClient.Builder httpClientBuilder = new OkHttpClient.Builder(); httpClientBuilder.connectTimeout(5, TimeUnit.SECONDS); //add log record if (BuildConfig.DEBUG) { //打印网络请求日志 LoggingInterceptor httpLoggingInterceptor = new LoggingInterceptor.Builder() .loggable(BuildConfig.DEBUG) .setLevel(Level.BASIC) .log(Platform.INFO) .request("请求") .response("响应") .build(); httpClientBuilder.addInterceptor(httpLoggingInterceptor); } return httpClientBuilder; } public void request() { Retrofit retrofit = new Retrofit.Builder() .baseUrl("http:/192.168.***.***:***")//设置网络请求URL .client(getClient().build()) .addConverterFactory(GsonConverterFactory.create()) .build(); //创建网络请求接口的实例 TestService request = retrofit.create(TestService.class); //对发送请求进行封装 Call<Reception> call = request.getLoginResult("API_B", param1, param2); try { Response<Reception> response = call.execute();//同步 if(response.body() != null) { data = response.body().getData(); } } catch(Exception e) { e.printStackTrace(); } } }