2013-08-01 2 views
0

У меня есть webservice для отдыха в http://localhost:8600/rest/student/details, который обновит информацию о студенте в базе данных. Я должен отправить данные в формате JSON в сообщение метода.Как отправить объект JSON для отдыха webservice?

Ниже метод для создания этого сообщения JSon

private void createOrUpdateStudent(WebResource service) { 
    Gson gson = new Gson(); 

    StudentImpl student= new StudentImpl(); 

    student.setId(6); 
    student.setName("Godwin"); 
    student.setSex("Male");  

    StudentView view = new StudentView(student);   

    System.out.println("::::::"+service.path("/rest/student").path("/details").type("application/json").post(ClientResponse.class, gson.toJson(view))); 
} 

studentView, где класс, как показано ниже.

@XmlRootElement(name="clusterZipcode") 
public class StudentView { 

    public Integer id; 
    public String name; 
    public String sex; 


    public StudentView() {} 

    public StudentView(StudentImpl student) { 
     this.id = student.getId(); 
     this.name = student.getName(); 
     this.sex = student.getSex(); 

    } 

при отправке, как и выше, я получаю сообщение об ошибке с Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column 'Name' cannot be null

ли я передаю значение JSon правильно или, если есть альтернативный способ, чтобы отправить сообщение, пожалуйста, JSon предложить мне.

+0

Можете ли вы показать, как выглядит ваш StudentView? –

+0

Я обновил класс sandview. – user1900662

+0

, вероятно, свойство name не будет установлено на сервере, где десериализует json обратно в объект. было бы трудно устранить неполадки, не увидев полную трассировку стека сервера. Вы не можете это понять? –

ответ

0

Я не вижу на вашем посту, где вы звоните в базу данных. Все, что я вижу, это то, что вы создаете ученика, а затем, оттуда, создаете представление (предполагая, что этот метод вызывается). Ошибка, которую вы получаете, связана с тем фактом, что в какой-то момент вы вызываете базу данных для ввода новой строки в (возможно) вашей студенческой модели. Если у вас есть спящий режим, можете ли вы убедиться, что вы не вызываете .save или .update в любой момент между вызовом, который вы получаете для учащегося, и до того, как вы вызываете setName?

+0

Вызов базы данных находится в сервисной части, к которой у нас нет доступа. – user1900662

+1

Вы получаете эту ошибку в сервисе? Эта ошибка связана с вызовом jdbc в базу данных, которую я не вижу нигде в объявленном вами вызове. Если ошибка на сервере, то нам нужно знать, как API должен передавать параметр имени на сервер. Что-то немного странно, так это то, что ваш класс ученика получил целое число как имя, если сервер ожидает строку, которую он может взорвать там, и терпит неудачу с другой ошибкой, которую вы видите, хотя я был бы удивлен, если он не выдавал Integer в String, так как вы все равно должны его публиковать –

+0

, фактически служба отлично работала при вызове метода службы в junit. мой код услуги, как это @POST @Consumes ({MediaType.APPLICATION_JSON}) общественного реагирования createOrUpdate (StudentView студент) {} должен студент был иметь значения, но это не то, что есть проблема. – user1900662

Смежные вопросы