可能是因为未在OkHttpClient中添加响应解析器的原因导致的。尝试将以下代码添加到OkHttpClient中,以使用Jackson解析响应体:
ObjectMapper mapper = new ObjectMapper().registerModule(new JavaTimeModule());
OkHttpClient client = new OkHttpClient.Builder()
.addInterceptor(new HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY))
.readTimeout(timeout, TimeUnit.MILLISECONDS)
.writeTimeout(timeout, TimeUnit.MILLISECONDS)
.connectTimeout(timeout, TimeUnit.MILLISECONDS)
.addInterceptor(chain -> {
Request.Builder requestBuilder = chain.request().newBuilder()
.addHeader("Content-Type", "application/json")
.addHeader("Authorization", "Bearer " + accessToken);
return chain.proceed(requestBuilder.build());
})
.addNetworkInterceptor(new StethoInterceptor())
.addInterceptor((Interceptor.Chain chain) -> {
Request request = chain.request();
if (request.method().equals("GET")) {
return chain.proceed(request);
}
Response response = chain.proceed(request);
if (response.body() == null) {
return response;
}
String contentType = response.header("Content-Type");
if (contentType == null) {
return response;
}
if (!contentType.contains("application/json")) {
return response;
}
ResponseBody wrappedBody = ResponseBody.create(response.body().contentType(),
response.body().string());
JsonNode root = mapper.readTree(wrappedBody.string());
if (root.has("results")) {
JsonNode results = root.get("results");
if (results.isArray() && results.size() > 0) {
JsonNode firstResult = results.get(0);
if (firstResult.has("job_stdout")) {
String job_stdout = firstResult.get("job_stdout").asText();
if (job_stdout.endsWith("\n")) {
job_stdout = job_stdout.substring(0, job_stdout.length() - 1);
((AppendableResponseBody) wrappedBody).append