标签:
Query注解
interface QueryGET{ @GET("/sheet") String getString(@Query("name")String name,@Query("age") int age,@QueryMap(encodeNames=true) Map<String, String> filters); }
模拟一个网络请求
String url="http://tieba.baidu.com"; RestAdapter adapter =new RestAdapter.Builder().setEndpoint(url).setConverter(new StringConverter()).build(); QueryGET create = adapter.create(QueryGET.class); Map<String,String> map=new HashMap<String, String>(); map.put("gender", "male"); map.put("address", "sz"); String string = create.getString("laiqurufeng", 22, map);
@FormUrlEncoded @POST("/user/edit") User updateUser(@Field("first_name") String first, @Field("last_name") String last);
用@Multipart注解来发送multipart-data,每一个part用@part注解.
@Multipart @PUT("/user/photo") User updateUser(@Part("photo") TypedFile photo, @Part("description") TypedString description);
interface FixedHeader{ @Headers({ //静态Header "Accept: application/vnd.github.v3.full+json", "User-Agent: Retrofit-Sample-App" }) @GET("/") Response getResponse(); }
动态Header
interface DynamicHeader{ @Headers("Cache-Control: max-age=640000") //静态Header @GET("/") Response getResponse(@Header("header1")String header1,@Header("header2")String header2); //动态Header,其value值可以在调用这个方法时动态传入. }
@GET("/user/{id}/photo") Photo getUserPhoto(@Path("id") int id);
如果想采用异步执行的话,需要方法的最后一个参数是CallBack.
interface AsychronousClient{ @GET("/") void getResponse(Callback<String> callback); //如果使用异步的方式的话,特别注意这里方法的返回值必须是void,Response转化成的对象类型写在CallBack<>的泛型中. }
RestAdapter adapter=new RestAdapter.Builder().setEndpoint("http://www.baidu.com").setConverter(new StringConverter()).build(); AsychronousClient create = adapter.create(AsychronousClient.class); create.getResponse(new Callback<String>() { @Override public void success(String str, Response response) { //第一个参数String就是通过我们自己实现的StringConverter把response转换成String了.访问成功时执行 } @Override public void failure(RetrofitError paramRetrofitError) { //访问失败时执行,比如说返回码是40x,50x或者出现IO异常 } });
标签:
原文地址:http://www.cnblogs.com/laiqurufeng/p/4484889.html