Вызов запроса на отдых от клиента с использованием веб-цели. Но параметр ресурса отдыха не сопоставляется с параметром класса модели клиента.

Я вызываю запрос на отдых через клиент JAX-RS, используя Джерси 2.0

User request = new User("1","ABC");

webTarget = client.target(strRestURL).path("Users");

Invocation.Builder invocationBuilder =  webTarget.request(MediaType.APPLICATION_XML); 
Response setUserResponse = invocationBuilder.post(Entity.entity(request, MediaType.APPLICATION_XML)); 
String resp = setUserResponse.readEntity(String.class);

Класс модели на стороне клиента выглядит следующим образом:

import java.io.Serializable;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement(name = "request")
public class User   {
    private static final long serialVersionUID = 1L;

    private String id;
    private String Name;

    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id= id;
    }
    public String getName() {
        return Name;
    }
    public void setName(String name) {
        this.Name= name;
    }
}

Реализация Rest WS:

@POST
@Path("/User")
@Consumes({MediaType.APPLICATION_XML})
@Produces({MediaType.APPLICATION_XML})
public HSServiceResponse setUsers(final User model, @Context HttpServletRequest request) throws IllegalArgumentException, IllegalAccessException {

Сторона сервера пользователя ресурса:

import java.io.Serializable;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement(name = "request")
@XmlAccessorType(XmlAccessType.NONE)
public class User   {
    private static final long serialVersionUID = 1L;
    @XmlElement
    private String id;
    @XmlElement
    private String Name;

    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id= id;
    }
    public String getName() {
        return Name;
    }
    public void setName(String name) {
        this.Name= name;
    }
}

Здесь атрибут Name класса ресурсов на стороне сервера получает значение как null при получении почтового запроса. Однако параметр id правильно отображается.

Если я изменю параметр Name на name в реализации класса ресурсов на стороне сервера. Это будет работать отлично. Однако мое требование состоит в том, чтобы сохранить оставшийся параметр только как имя («N» заглавная), а не имя («n» маленькое).

Как я могу отправить запрос от клиента Джерси на карту Name вместе с id.

Любая помощь приветствуется!


person Prerna shah    schedule 01.08.2018    source источник


Ответы (1)


Используйте name< /a> атрибут аннотации @XmlElement.

class UserServer {
    @XmlElement(name="Name")
    private String name;
}

Это позволяет вам изменить имя элемента XML, не прибегая к причудливым именам переменных в вашем коде Java.

ОБНОВИТЬ

Для User на стороне клиента имя XML-элемента получается с помощью свойства Java-бина, которое представляет собой getName, удаляя get и переводя первую букву в нижний регистр. Именно так работает соглашение JavaBean. Если вы хотите изменить это, вам следует добавить @XmlElement(name="Name") к методу getName().

class UserClient {
    @XmlElement(name="Name")
    public String getName() {
        return this.name;
    }
}
person Paul Samsotha    schedule 01.08.2018
comment
до сих пор не отображается из клиента Rest. Ниже XML-запрос от почтальона работает хорошо. Раньше он работал и от почтальона. Но мне нужно вызвать из упомянутого выше остаточного клиента ‹?xml version=1.0 encoding=UTF-8 ?› ‹request› ‹id›192183025007‹/id› ‹Name›ABC‹/Name› ‹/request› - person Prerna shah; 01.08.2018
comment
Извините, кажется, я неправильно понял вопрос. Я обновлю свой ответ. - person Paul Samsotha; 01.08.2018