Cordova如何将表单数据发布到REST URL

时间:2017-05-30 00:59:10

标签: html rest cordova java-ee

我正在使用REST在eclipse中创建一个非常简单的HTTP Status 415 – Unsupported Media Type混合移动项目演示。我的想法是,我注册了详细信息,当我提交登录按钮时,它会调用REST URL并保存登录详细信息。

问题是获得index.html

<form name="login" id="register" action="http://localhost:8080/peerby/user/" method="post"> <label for="fname">First Name</label> <input id="fname" name="firstName" placeholder="First Name" type="text"/> <br> <label for="lname">Last Name</label> <input id="lname" name="lastName" placeholder="Last Name" type="text"/> <br> <label for="adr">Address</label> <input id="adr" name="address" placeholder="Address" type="text"/> <br> <label for="eml">Email</label> <input id="eml" name="email" placeholder="Email" type="email"/> <br> <label for="pswd">Password</label> <input id="pswd" name="pasword" placeholder="password" type="password"/> <br> <input type="submit" value="Login" id="log"/> </form> <script type="text/javascript" src="cordova.js"></script> <script type="text/javascript" src="js/index.js"></script> 是:

userResorce

这是@Path("user") @Produces(MediaType.APPLICATION_JSON) public class UserResource { private UserDAO userDao = new UserDAO(); @GET public List<UserModel> getAllUsers() { return userDao.getAllUserDao(); } @GET @Path("/{userID}") public UserModel getUser(@PathParam("userID") Long id) { return userDao.getUserDao(id); } @POST @Consumes(MediaType.TEXT_HTML) //used several mediaType public List<UserModel> saveUser(UserModel user) { userDao.addUserDao(user); return userDao.getAllUserDao(); } } 文件:

Postman

使用cordova它可以正常工作。但是使用Unsupported Media Type,我得到MediaType。我为@Consumes使用了多个Unsupported Media Type。但我得到的只是Sunday

1 个答案:

答案 0 :(得分:0)

在HTML表单中设置enctype,如下所示:

<form name="login" id="register" action="http://localhost:8080/peerby/user/" method="post" enctype='application/json'>

在REST控制器中,将其作为application / JSON使用,

@Consumes(MediaType.APPLICATION_JSON)

在审核您的代码后,您错过了以下内容:

POM.xml中的依赖

<dependency> 
<groupId>com.sun.jersey</groupId> 
<artifactId>jersey-json</artifactId> 
<version>1.8</version>

在部署描述符(web.xml)中,您缺少jersey-serlvet的init参数:

<init-param> 
<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name> 
<param-value>true</param-value> 
</init-param>

在您的服务器实施服务中,您需要正确定义资源以确保将请求路由到正确的方法。

班级注释:

@Path("/user") 
public class UserResource {

方法级别注释

 @POST 
    @Path("/create") 
    @Consumes(MediaType.APPLICATION_JSON) 
    Produces(MediaType.APPLICATION_JSON) 
    public Response saveUser(UserModel user) { 

修复所有这些后,将HTML POST操作URL部署并更改为“peerby / rest / user / create”以成功发布数据。