美文网首页
Retrofit2笔记

Retrofit2笔记

作者: andyfeng | 来源:发表于2017-07-22 09:49 被阅读0次

    一、Retrofit使用

    定义接口

    public interface GitHub {

    @GET("/repos/{owner}/{repo}/contributors")

    Call<List<Contributor>> contributors(@Path("owner") String owner, @Path("repo") String repo);

    }

    Retrofit retrofit = new Retrofit.Builder().baseUrl("http://localhost:8080/").build();

    GitHub github = retrofit.create(GitHub.class);

    List contributors = call.execute().body();

    地址以斜线结尾,注解中的地址不要以斜线开头.

    二、Retrofit注解

    1. GET相关

    @GET("/repos/{owner}/{repo}/contributors")

    Call> contributors(@Path("owner") String owner, @Path("repo") String repo);

    result : contributors("square", "")

    @Headers("Cache-Control: max-age=640000")

    @GET("/")

    @Headers({"X-Foo: Bar","X-Ping: Pong"})

    @GET("/")

    @GET("/")

    Call foo(@Header("Accept-Language") String lang);

    @GET("/search")

    void list(@HeaderMap Map headers);

    Accept: text/plain and Accept-Charset: utf-8

    foo.list(ImmutableMap.of("Accept", "text/plain", "Accept-Charset", "utf-8"));

    2. POST

    除上述GET请求配置外,有Field, FieldMap,需要指定FormUrlEncoded

    @FormUrlEncoded

    @POST("/")

    Call example(

    @Field("name") String name,

    @Field("occupation") String occupation);

    Calling withfoo.example("Bob Smith", "President")yields a request body ofname=Bob+Smith&occupation=President.

    @FormUrlEncoded

    @POST("/things")

    Call things(@FieldMap Map fields);

    Calling withfoo.things(ImmutableMap.of("foo", "bar", "kit", "kat")yields a request body offoo=bar&kit=kat.

    @Body 发送json格式POST body

    相关文章

      网友评论

          本文标题:Retrofit2笔记

          本文链接:https://www.haomeiwen.com/subject/kpgykxtx.html