Retrofit
本文最后更新于 41 天前,其中的信息可能已经有所发展或是发生改变。

Retrofit 是用于 Android 和 Java 的 HTTP 客户端,它简化了与 RESTful API 的交互。通过 Retrofit 可以非常方便地向服务器发送 HTTP 请求,并将响应结果映射到 Java 对象中。Retrofit 支持多种网络请求方式,支持异步请求、同步请求、文件上传下载等。使用步骤如下:

1. 引入 Maven 依赖

    <dependency>
      <groupId>com.squareup.retrofit2</groupId>
      <artifactId>retrofit</artifactId>
      <version>2.9.0</version>
    </dependency>
    <dependency>
      <groupId>com.squareup.retrofit2</groupId>
      <artifactId>converter-jackson</artifactId>
      <version>2.9.0</version>
    </dependency>
    <dependency>
      <groupId>com.squareup.retrofit2</groupId>
      <artifactId>adapter-rxjava2</artifactId>
      <version>2.9.0</version>
    </dependency>

2. 定义 HTTP 接口

public interface ChatService {
    @POST("/api/v1/services/aigc/text-generation/generation")
    @Headers("Content-Type: application/json")
    Call<ChatResponse> chat(@Header("Authorization") String authorization, 
                            @Body ChatRequest request);
}

Call 对象是对一个具体 HTTP 请求的封装,包含以下信息:

  • 请求体(由 @Body ChatRequest 序列化后的 JSON 数据)
  • 请求方法(如 POST)、URL(基于 baseUrl 和接口中的路径注解)
  • 请求头(如 Authorization 和 Content-Type)

3. 创建 Retrofit 实例

public ChatServiceImpl chatService() {
    ChatService chatService = new Retrofit.Builder()
            .baseUrl(configuration.getApiHost())
            .client(httpClient)
            .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
            .addConverterFactory(JacksonConverterFactory.create())
            .build()
            .create(ChatService.class);
    return new ChatServiceImpl(chatService, configuration);
}

4. 生成动态代理对象并发起请求

当调用 Retrofit 的 create(ChatService.class) 方法时,Retrofit 会 动态生成 ChatService 接口的实现类,通过生成的代理对象调用接口方法,并执行网络请求

public class ChatServiceImpl {
    private ChatService chatService; // Retrofit 生成的代理对象
    private Configuration configuration;

    public ChatResponse chat(ChatRequest chatRequest) throws IOException {
        // 调用代理方法,生成 Call 对象
        Call<ChatResponse> call = chatService.chat(
            configuration.getAuthorization(), // "Bearer <apiKey>"
            chatRequest
        );
        
        // 同步执行请求
        Response<ChatResponse> execute = call.execute();
        return execute.body();
    }
}
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇