Retrofit 网络请求
2015-08-30 21:13
519 查看
1.准备:
Gradle配置文件dependencies { ... compile 'com.squareup.retrofit:retrofit:1.9.0' ... }
2.给出一个用retrofit分别进行get和post网络请求的代码例子
2.1定义一个接口,在接口中声明一个方法来定义请求的相关内容。
public interface User { @GET(Urls.URL_USER_ACCOUNTINFO) void getAccountInfo(@QueryMap Map<String, String> a, Callback<JsonObject> callback); @Multipart @POST(Urls.URL_S***E_PHOTO) void postPhoto(@Part("photo") TypedFile photo, Callback<JsonObject> callback); }其中@GET.@POST表明该请求的方式,除此之外还有@DELETE@HEAD@PUT
其中@QueryMap为参数定义,Map<String,String> a,为定义的参数格式,但下文中不会使用变量a,所以在命名方面whatever
Callback<JsonObject> callback为回调接口,JsonObject表明返回数据接口为JsonObject类型。
这段代码可以概括为,定义了一个user接口,该接口定义了一个getAccountInfo函数,这个函数会通过HTTP GET请求去访问服务器的Urls.URL_USER_ACCOUNT(这个变量以及之后的PRE均在Urls文件中定义好)路径并把调用Callback方法将结果返回为一个JsonObject类型的java对象。
函数可以定义为同步和异步,具有返回值的函数为同步执行的。
@GET("/user/{id}/photo") Photo listUsers(@Path("id") int id);
异步执行函数没有返回值并且要求函数最后一个参数为Callback对象,callback对象会在主线程中调用。
2.2创建一个RestAdapter对象
RestAdapter adapter=new RestAdapter.Builder() .setEndpoint(Urls.PRE) .build();
setEndPoint方法指定了请求地址的前半部分,即服务器的地址,如http://api.github.com
2.3得到了一个RestAdapter对象后,调用RestAdapter的create方法得到User接口的实现类
public static void method1(Map<String, String> map, final Context context) { Callback<JsonObject> callback=new Callback<JsonObject>() { @Override public void success(JsonObject s, Response response) { Toast.makeText(context,s.toString(),Toast.LENGTH_LONG ).show(); } @Override public void failure(RetrofitError error) { Log.e("Tag","get failed again"); } }; Request.User user=adapter.create(Request.User.class); user.getAccountInfo(map,callback); }
同理post请求
3在主线程中调用的时候
public void onClickGet(View view) { Map<String,String> map= new HashMap<>(); map.put("ID","a7852cfb-9648-4213-8c08-26c5fe8dd8b6"); Request.method1(map,MainActivity.this); }
retrofit官网:http://square.github.io/retrofit/
相关文章推荐
- TCP服务器/客户端代码示例
- Liunx学习笔记--基本网络设定(测试内容)
- 九、MDT 2013 Update 1批量部署-第三方PXE无盘网络启动配套使用
- iOS学习总结之网络编程
- Android4.0以上版本Http请求的问题
- Volley理解
- [网络转载 ]LoadRunner技巧之THML与URL两种录制模式分析
- 网络协议
- configure: error: in `/root/httpd-2.2.11/srclib/apr': c
- HTTP API选择WinInet or WinHttp?
- TCP/IP协议详解内容总结(怒喷一口老血)
- 计算机网络知识点
- 强制使用处于TIME_WAIT的TCP状态的socket地址
- Atitit.request http乱码的设计防止 检测与解决最近实践p825 attilax总结.doc
- Atitit.request http乱码的设计防止 检测与解决最近实践p825 attilax总结.doc
- Atitit.request http乱码的设计防止 检测与解决最近实践p825 attilax总结.doc
- oracle网络配置listener.ora、sqlnet.ora、tnsnames.ora
- ios Communicating with HTTP Servers 与HTTP服务器通信 官方文档翻译(五)
- SCADA组态系统将主宰新的网络安全领域
- HTTP Get,Post请求详解