OkHttpUtil.java
1.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package com.xly.util;
import okhttp3.*;
import java.io.IOException;
import java.util.concurrent.TimeUnit;
/**
* OkHttp 薄封装:目前仅 {@code LlmJsonClient} 用它同步 POST JSON。
*/
public class OkHttpUtil {
private final OkHttpClient client;
private OkHttpUtil(long connectTimeout, long readTimeout, long writeTimeout) {
client = new OkHttpClient.Builder()
.connectTimeout(connectTimeout, TimeUnit.SECONDS)
.readTimeout(readTimeout, TimeUnit.SECONDS)
.writeTimeout(writeTimeout, TimeUnit.SECONDS)
.build();
}
public static OkHttpUtil getInstance(long connectTimeout, long readTimeout, long writeTimeout) {
return new OkHttpUtil(connectTimeout, readTimeout, writeTimeout);
}
/** POST JSON,带 Bearer 鉴权(OpenAI 兼容端点;Ollama 忽略该头,云端网关需要真实 key)。 */
public String postJson(String url, String bearerToken, String json) throws IOException {
RequestBody body = RequestBody.create(json, MediaType.parse("application/json; charset=utf-8"));
Request.Builder reqBuilder = new Request.Builder().url(url).post(body);
if (bearerToken != null && !bearerToken.isBlank()) {
reqBuilder.header("Authorization", "Bearer " + bearerToken);
}
Request request = reqBuilder.build();
try (Response response = client.newCall(request).execute()) {
if (!response.isSuccessful()) {
throw new IOException("Unexpected code: " + response.code() + ", message: " + response.message());
}
ResponseBody rb = response.body();
return rb != null ? rb.string() : "";
}
}
}