Retrofit简单封装
什么是Retrofit呢?**Retrofit可以理解为请求网络的一种方式比如我们之前常用的HttpClient,HttpConnection,Okhttp等它是基于Okhttp基础上进行研发的,优点我们可以从网上找1.首先是定义请求接口public interface ProjectAPI{//这是get请求@GETCall<String> getMetho
·
什么是Retrofit呢?**
- Retrofit可以理解为请求网络的一种方式
- 比如我们之前常用的HttpClient,HttpConnection,Okhttp等
- 它是基于Okhttp基础上进行研发的,优点我们可以从网上找
1.首先是定义请求接口
public interface ProjectAPI
{
//这是get请求
@GET
Call<String> getMethod(@Url String url);
//这是post请求
//必须添加@FormUrlEncoded注解
@FormUrlEncoded
@POST
Call<String> postMethod(@Url String url, @FieldMap Map<String,String> map);
}
2.创建管理类HttpManager进行管理接口
public class HttpManager
{
//请求网络使用Get方式,baseUrl是基本的接口,
//对于完整接口http://v.juhe.cn/todayOnhistory/queryEvent.php?//key=69a7eeba7869f8bdcdee7b2bc3bb5aa2&date=1/16
//http://v.juhe.cn/就是基本接口
//url是我们的最终的接口,但有一点注意的是,我们的url既可以以上述为例为
http://v.juhe.cn/todayOnhistory/queryEvent.php?//key=69a7eeba7869f8bdcdee7b2bc3bb5aa2&date=1/16
//也可以是todayOnhistory/queryEvent.php?//key=69a7eeba7869f8bdcdee7b2bc3bb5aa2&date=1/16,整体url可以是拼接起来的至于重复的会被url覆盖,简单来说就是指
url针对baseUrl调整,url没有的会复制baseUrl的,有的就覆盖掉
public static void getMethod(String baseUrl, String url, final Callback<String> callback)
{
Retrofit retrofit=new Retrofit.Builder().baseUrl(baseUrl).addConverterFactory(ScalarsConverterFactory.create()).build();
ProjectAPI projectAPI=retrofit.create(ProjectAPI.class);
Call<String> stringCall=projectAPI.getMethod(url);
stringCall.enqueue(new Callback<String>() {
@Override
public void onResponse(Call<String> call, Response<String> response) {
callback.onResponse(call,response);
}
@Override
public void onFailure(Call<String> call, Throwable t) {
callback.onFailure(call,t);
}
});
}
//
//1. post请求
//2. map集合中存放我们不同的请求参数
//3. Callback<String> callback回调接口
public static void postMethod(String baseUrl, String url, Map<String,String> map, final Callback<String> callback)
{
Retrofit retrofit=new Retrofit.Builder().baseUrl(baseUrl).addConverterFactory(ScalarsConverterFactory.create()).build();
ProjectAPI projectAPI=retrofit.create(ProjectAPI.class);
Call<String> stringCall=projectAPI.postMethod(url,map);
stringCall.enqueue(new Callback<String>() {
@Override
public void onResponse(Call<String> call, Response<String> response) {
callback.onResponse(call,response);
}
@Override
public void onFailure(Call<String> call, Throwable t) {
callback.onFailure(call,t);
}
});
}
}
接下来在主页面根据我们的请求方式(Get,Post)不同来进行请求了
Get请求
//管理类调用封装的Get方法
HttpManager.getMethod("http://v.juhe.cn/", "http://v.juhe.cn/todayOnhistory/queryEvent.php?key=69a7eeba7869f8bdcdee7b2bc3bb5aa2&date=1/16", new Callback<String>() {
@Override
public void onResponse(Call<String> call, Response<String> response) {
Toast.makeText(MainActivity.this, response.body(), Toast.LENGTH_SHORT).show();
}
@Override
public void onFailure(Call<String> call, Throwable t) {
}
});
Post请求
Map<String,String> map1=new HashMap<String,String>();
map1.put("key","69a7eeba7869f8bdcdee7b2bc3bb5aa2");
map1.put("date","1/15");
//管理类调用封装的Get方法
HttpManager.postMethod("http://v.juhe.cn/", "todayOnhistory/queryEvent.php", map1, new Callback<String>() {
@Override
public void onResponse(Call<String> call, Response<String> response) {
Toast.makeText(MainActivity.this, response.body(), Toast.LENGTH_SHORT).show();
}
@Override
public void onFailure(Call<String> call, Throwable t) {
}
});
更多推荐
所有评论(0)