Я разработал сервис API RESTful (бэкэнд) с Laravel 5 и протестировал его с POSTMAN. Есть несколько ресурсов для получения информации с помощью запросов GET и POST, они отлично работают с POSTMAN. Я начал тестировать API с клиентом Java на Джерси. Методы GET отлично работают с таким кодом, и ответом является json, который я анализирую с Джексоном.
Client client = ClientBuilder.newClient();
WebTarget webTarget = client.target(ClientUrl);
Invocation.Builder invocationBuilder =
webTarget.request(MediaType.APPLICATION_FORM_URLENCODED_TYPE);
Response mResponse = invocationBuilder.get();
Следующий метод, который я хочу проверить, - это вход в систему с методом POST.
В POSTMAN я использую в заголовке ключ «Content-Type» + значение «application / x-www-form-urlencoded», а в теле я отправляю Json с этой информацией
{"email":"xxxxxx@gmail.com", "password":"xxxxxxxxxx"}
Чтобы использовать метод POST с Джерси, я использую следующий код
Client client = ClientBuilder.newClient();
Form mForm = new Form();
mForm.param("email", email);
mForm.param("password", password);
WebTarget target = client.target(Utils.URL_LOGIN);
//As stated in the documentation, the APPLICATION_FORM_URLENCODED =
//"application/x-www-form-urlencoded"
Builder request = target.request(MediaType.APPLICATION_FORM_URLENCODED);
//I print the request to verify the request
print(request.toString());
Response response = request.post(Entity.form(mForm));
//I print the response to verify the response received and also the code
print("Response: " + response.toString());
print("Code: " + response.getStatus());
String result = response.readEntity(String.class);
response.close();
print(result);
Когда я печатаю request.toString (), я получаю это
org.glassfish.jersey.client.JerseyInvocation$Builder@65e579dc
Когда ответ печатается
Response: InboundJaxrsResponse{context=ClientResponse{method=POST, uri=http://www.dance-world.com/api/login, status=200, reason=OK}}
Получено состояние 200, но когда я печатаю response.readEntity, я получаю ответ, который я использую в бэкэнде для тех случаев, когда сервер не получает информацию с запросом.
{"code":400,"status":"error","message":"No data attached to the request"}
Когда я использую POSTMAN и получаю результат 200, при успехе я получаю токен в виде строки.
Я не могу понять, в чем моя ошибка, потому что я следую коду в документации и с книгой RESTful Java с JAX-RS 2.0