OkHttp Response не предоставил объект тела на стороне клиентаJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 OkHttp Response не предоставил объект тела на стороне клиента

Сообщение Anonymous »

Я пишу REST API, используя библиотеку okhttp в Spring Boot. У меня есть OkHttpClient, запрашивающий запрос GET (клиент) от другого API (сервера). И клиент, и сервер используют библиотеки OkHtttp, поэтому я использовал okhttp.response для возврата объекта с сервера. На стороне сервера мне удалось правильно распечатать тело внутри объекта Response, тогда как на стороне клиента я не вижу ожидаемый объект в объекте Response клиента.dd
Клиентская сторона :

Код: Выделить всё

OkHttpClient httpClient = new OkHttpClient();
Request request = new Request.Builder()
.url("http://localhost:8081/temp/getResponse2")
.build();
Response response = httpClient.newCall(request).execute();
final String body = response.body().string();
response.body().close();
System.out.println("The response is: " + response.toString());
System.out.println("The body in response is: " + body);
return body;
Серверная часть (API):

Код: Выделить всё

@GetMapping(path = "/temp/getResponse2")
public Response testGETAWBNotes2() throws IOException {
final ABNotes abNotes = ABNotes.builder()
.name("name")
.remarks("remarks")
.build();
//        return new ResponseEntity(awbNotes, HttpStatus.OK);
Request request = new Request.Builder()
.url("https://www.google.com")
.build();
okhttp3.ResponseBody responseBody = okhttp3.ResponseBody.create(objectMapper.writeValueAsString(abNotes),
MediaType.parse("application/json; charset=utf-8"));
Response response = new Response.Builder()
.request(request)
.body(responseBody)
.protocol(Protocol.HTTP_1_1)
.message("Success")
.code(200)
.build();
System.out.println("the body is: " + response.body().string());
response.body().close();
return response;
}
На стороне сервера тело имеет объект:

"тело: {"name":"name","remarks":" примечания"}"

Там, где на стороне клиента я вижу объект тела как:

"Тело ответа: {"lazyCacheControl $okhttp":null,"redirect":false,"successful":true}"
Но когда я использовал RepsonseEntity для возврата объекта ABNotes со стороны сервера я смог увидеть объект ABNotes на стороне клиента, но это не тот случай, когда я возвращаю ohttp.Response со стороны сервера.
Еще один вопрос это: Каким должен быть объект запроса, который мы должны поместить в тело ответа? Если наш API не принимает никаких входных данных от клиента, какой запрос мы должны поместить в ответ в этом случае, будет ли размещение фиктивный объект запроса работает?
Мне не удалось найти ни одного полезного примера построения ответов на стороне сервера в сочетании с примером кода на стороне клиента. Есть какие-нибудь мысли или предложения о том, где я делаю ошибку?
Заранее спасибо.

Подробнее здесь: https://stackoverflow.com/questions/787 ... lient-side
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»