Всегда получаю 400 — неверный запрос при публикации данных в REST/JAX-RS.JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Всегда получаю 400 — неверный запрос при публикации данных в REST/JAX-RS.

Сообщение Anonymous »

Person.java

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

@XmlRootElement
public class Person {

private int id;
private String fname;
private String lname;

// getter and setter
}
Служба REST POST

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

@POST
@Consumes({MediaType.APPLICATION_JSON})
public void createPerson(JAXBElement
 person) {
Person p = person.getValue();
System.out.println("========= Person ===========");
System.out.println(p.getFname() + " " + p.getLname());
System.out.println("========= Person ===========");
}
ИЛИ этот

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

@POST
@Consumes({MediaType.APPLICATION_JSON})
public void createPerson(Person person) {
System.out.println("========= Person ===========");
System.out.println(person.getFname() + " " + person.getLname());
System.out.println("========= Person ===========");
}
Тестовый клиент: всегда возвращает 400 — неверный запрос.

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

ClientConfig config = new DefaultClientConfig();
Client client = Client.create(config);
WebResource service = client.resource("http://localhost:8084/rest/api/person");

Person person = new Person();
person.setId(1);
person.setFname("John");
person.setLname("Doe");
ClientResponse resp = service.type(MediaType.APPLICATION_JSON).post(ClientResponse.class, person);

System.out.println(resp.getStatus()); //Always return 400 - Bad request
Любая помощь приветствуется. Кстати, я использую майку 1.8. Я могу заставить его работать в последней версии Джерси, но мне нужно, чтобы он работал и в предыдущей версии Джерси.
Вывод LoggingFilter:

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

Mar 10, 2015 7:47:24 AM com.sun.jersey.api.client.filter.LoggingFilter log
INFO: 1 * Client out-bound request
1 > POST http://localhost:8084/rest/api/person
1 > Content-Type: application/json
{"fname":"d","id":"0","lname":"d"}

Mar 10, 2015 7:47:24 AM com.sun.jersey.api.client.filter.LoggingFilter log
INFO: 1 * Client in-bound response
1 < 400
1 < Date: Mon, 09 Mar 2015 23:47:24 GMT
1 < Content-Length: 1004
1 < Connection: close
1 < Content-Type: text/html;charset=utf-8
1 < Server: Apache-Coyote/1.1
1 <
Apache Tomcat/7.0.27 - Error report HTTP Status 400 - Bad Request
type[/b] Status report

[b]message[/b] [u]Bad Request[/u]

[b]description[/b] [u]The request sent by the client was syntactically incorrect (Bad Request).[/u]
Apache Tomcat/7.0.27
Вывод журнала сервера Apache Tomcat: (Но я не думаю, что это имеет отношение к 400 — неверный запрос?)

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

Mar 10, 2015 7:29:20 AM org.apache.catalina.core.StandardContext loadOnStartup
SEVERE: Servlet /billing threw load() exception
javax.servlet.ServletException: missing jspFile
at org.apache.jasper.servlet.JspServlet.init(JspServlet.java:123)
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1266)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1185)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1080)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5015)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5302)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:895)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:871)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:615)
at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:649)
at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1585)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
Зависимости (JARS):

[*]activation.jar
[*]asm- 3.1.jar
[*]commonj.sdo-2.1.1
[*]eclipselink-2.6.0-RC1
[*] jackson-jaxrs-1.7.1
[*]javax.json-1.0.4
[*]javax.persistence-2.1.0
[*]jaxb-api
[*]jersey-apache-client-1.8
[*]jersey-bundle-1.8
< li>jersey-client-1.8
[*]jersey-core-1.8
[*]jersey-json-1.8
[*] jersey-server-1.8
[*]jsr173_1.0_api
[*]jstl-1.2
[*]org.eclipse.persistence. moxy-2.6.0-RC1
[*]servlet-api-2.5
[*]validation-api-1.1.0.Final


Подробнее здесь: https://stackoverflow.com/questions/289 ... est-jax-rs
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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