2015-11-29 66 views
1

我正嘗試將用戶對象發送到JSON格式的REST API。如何將自定義對象傳遞給使用JSON的控制器

var user={ 
firstName: "someVal",lastName: "", email: "", contactPhone: "", password: "" 
}; 
var url="http://localhost:8085/MyappName/appliPath/login"; 
$.ajax({ 
method:'POST', 
contentType: "application/json", 
datatype:'json', 
url : url, 
data:JSON.stringify(user), 
success: function(data){ 
    console.log(data); 
}, 
error: function(error){ 
    console.log(error); 
} 
}); 
}); 

以下是我的登錄控制器類代碼

@POST 
@Consumes(MediaType.APPLICATION_JSON) 
@Produces(MediaType.APPLICATION_JSON) 
public static User register(User user){ 
    System.out.println("in register"); 
    User register = null; 
    if(!validateUser(user.getEmail())){ 
     System.out.println("calling new user"); 
     register = loginDao.addNewUser(user); 
     System.out.println("returning user"); 
    } 
    return register; 
} 

怎能我複雜的用戶發送到我的代碼?我應該說@Path("{user}")

+0

有什麼問題你當前的代碼?你有錯誤嗎?如果是這樣?這些信息將有助於幫助你......而且不要讓方法變成「靜態」 –

回答

0

您可以使用Post方法將複雜Object發送到Rest API。 下面是將接受用戶JOSN對象的REST API。 你可以按照有關如何張貼複雜對象的位置:http://entityclass.in/rest/jerseyClientGetXml.htm

import java.util.List; 

import javax.ws.rs.Consumes; 
import javax.ws.rs.GET; 
import javax.ws.rs.POST; 
import javax.ws.rs.Path; 
import javax.ws.rs.Produces; 
import javax.ws.rs.core.MediaType; 
import javax.ws.rs.core.Response; 

@Path("/StudentService") 
public class StudentService { 

    @POST 
    @Path("/update") 
    @Consumes(MediaType.APPLICATION_JSON) 
    public Response consumeJOSN(User user) { 

     User output = user.toString(); 

     return Response.status(200).entity(output).build(); 
    } 
} 

對於這個問題的REST API我已經寫Java客戶端

public class ClientJerseyPost { 

    public static void main(String[] args) { 

     try { 

      User user = new User(); 
      user.setName("JON"); 
      user.setAddress("Paris"); 
      user.setId(5); 

      String resturl = "http://localhost:8080/RestJerseyClientXML/rest/StudentService/update"; 
      Client client = Client.create(); 
      WebResource webResource = client.resource(resturl); 

      ClientResponse response = webResource.accept("application/json") 
        .post(ClientResponse.class, student); 
      String output = response.getEntity(String.class); 



      if (response.getStatus() != 200) { 
       throw new RuntimeException("Failed : HTTP error code : " 
         + response.getStatus()); 
      } 

     } catch (Exception e) { 

     } 
    } 

} 
相關問題