标签:
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