网络请求框架
来源:互联网 发布:平码非常简单的算法 编辑:程序博客网 时间:2024/06/06 07:01
retrofit_okhttp
public class Model { //使用前提:必须添加4个依赖库 Retrofit retrofit; //服务器地址 public static final String BASE_URL = "http://....com"; public static final String ID = "44297"; public static final String SIGN = "cc8738fb83254674b4b1e169548ce8b9"; //回调接口,通知”外面“,里面接口调用抽象方法。外面实现该接口 public interface BeanCallback<T> { void onSuccess(T bean); void onError(String message); } /**单例模式**/ private Model() { retrofit = new Retrofit.Builder() .baseUrl(BASE_URL) .addConverterFactory(GsonConverterFactory.create()) //请求bean对象 //请求String则是ScalarsConverterFactory .build(); } private static Model instance= new Model(); public static Model getInstance() { return instance; } //请求接口 public void getType(final BeanCallback<第一次先写String,第二次写Bean> callback) { //使用retorfit请求接口 Call<分两次> call = retrofit.create(接口注解.class).getType(ID, SIGN); call.enqueue(new Callback<分两次>() { @Override public void onResponse(Call<分两次> call, Response<分两次> response) { //第一次 //Log.e("TAG", "--------" + response.body().toString()); //第二次(如果是JsonObject系统自动转) TypeBean bean = response.body(); /**如果是JsonArray,自己手动转 Gson gson = new Gson(); String result = response.body(); List<bean> list = gson.fromJson(result, new TypeToken<List<bean>>() {}.getType());**/ if (bean.getShowapi_res_code() == 0) callback.onSuccess(bean); else callback.onError(bean.getShowapi_res_error()); } @Override public void onFailure(Call<TypeBean> call, Throwable t) { callback.onError("网络请求失败!"); } }); }
两种模式:
MVC:单例.getType
MVP:new Presenter————–model通知presenter———-presenter通知ui
okhttp请求到数据,修改ui———必须runOnUiThread
retrofit请求到数据,直接修改Ui
/**接口注解**/public interface GirlService { //类型接口 String TYPE_URL = "/1208-1"; //根据ID 获取图片集 String PICLIST_BY_ID = "/1208-2"; //根据图片集 列举所有图片 String ALLPIC_BY_LIST = "/1208-3"; //http: // 请求行 请求方法(GET POST) url http1.1 // 请求头 正文的格式 json,xml,键值对,流 // 请求正文 //GET请求 获取 类型接口 @GET(TYPE_URL) //Get的参数 使用Query来标记 Call<TypeBean> getType(@Query("showapi_appid") String showApi_id, @Query("showapi_sign") String showApi_sign); //使用Post来请求 根据类型id获取图片集 @POST(PICLIST_BY_ID) // @Multipart带文件 使用Part // @FormUrlEncoded 不带文件使用Field //标明 内容类型 @FormUrlEncoded //使用键值对 Call<ListBean> getListByTypeId(@Field("showapi_appid") String showApi_id, @Field("showapi_sign") String showApi_sign, @Field("type") int type, @Field("page") int page, @Field("rows") int rows); @POST(ALLPIC_BY_LIST) @FormUrlEncoded Call<PicBean> getAllList(@Field("showapi_appid") String showApi_id, @Field("showapi_sign") String showApi_sign, @Field("id") String id);// @POST("dizhi")// @Multipart// Call<String> test(@Part MultipartBody.Part file, @Part("username") String username, @Part("password") String password);}
xutils
1. xutils 初始化 2. 设置请求参数 RequestParams 3. 开始请求 x.http().post
阅读全文
0 0
- 网络请求框架---Volley
- ios 网络请求框架
- Volley网络请求框架
- 网络请求框架---Volley
- 网络请求框架-Volley
- Volley-----网络请求框架
- Volley网络请求框架
- 网络请求框架
- okhttp网络请求框架
- 网络请求框架
- http网络请求框架
- 网络请求框架OKHttp
- 网络请求框架
- 网络请求框架
- OkHttp网络请求框架
- Volley网络请求框架
- retrofit网络请求框架
- 网络请求框架
- thinkphp 使用Oracle数据库
- 数据库Join实现
- Solr的安装和启动
- 【力荐】ABAP常用DEBUG调试代码的八种方式
- python zip
- 网络请求框架
- 这是从云栖大会指挥部发回的现场报道
- witness_node主函数中关于命令行参数解析及配置编程流程范式
- 【codevs 1215】迷宫
- Vue懒加载
- MySQL查询分页,同时获取总记录数
- 【笔记】cdh报错记录
- 解决Error:(3) Error retrieving parent for item: No resource found that matches the given name 'android
- ERP中通过自定义挂出流程图