admin管理员组文章数量:1399898
I am trying to make post request to jersey test method. But I am always getting an error and have no idea, what is wrong. I am using Tomcat.
Java code:
@Path("/users")
public class UsersResource {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String sayHello() {
return "Hello Jersey Today";
}
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public String createUser(User us)
{
//System.out.println("userdata " + us);
User user = new User("testUserName", "testPassword");
return user.toJson();
}
}
User class:
import .google.gson.Gson;
import .google.gson.GsonBuilder;
public class User
{
private String username;
private String password;
public User()
{
super();
}
public User(String name, String pass)
{
super();
this.username = name;
this.password = pass;
}
public User(String username)
{
this.username = username;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String toJson()
{
Gson gson = new GsonBuilder().setPrettyPrinting().create();
String json = gson.toJson(this);
return json;
}
}
And js code:
$(function () {
main = {
// Start updates
start: function(){
var user = {username: "test", password: "pass"};
var encoded = $.toJSON( user );
ajaxPost.ajaxRequest("TodoListing/rest/users", user,
function(data)
{
alert("success with data " + data);
},
function(jqXHR, textStatus, errorThrown) {
alert("error " + textStatus + "/" + errorThrown);
});
}
},
// Ajax request.
ajaxPost = {
ajaxRequest: function(service, data, successSelector, errorSelector) {
$.ajax({
type: 'POST',
url: ajaxPost.serverURL + service,
data: data,
contentType: "application/json",
dataType: "application/json",
success: successSelector,
error: errorSelector
});
},
serverURL: 'http://localhost/',
};
});
JS always returns error without description(empty errorThrown) and jersey logs an error on request:
PM .sun.jersey.server.wadl.generators.WadlGeneratorJAXBGrammarGenerator attachTypes
INFO: Couldn't find JAX-B element for class java.lang.String
I am trying to make post request to jersey test method. But I am always getting an error and have no idea, what is wrong. I am using Tomcat.
Java code:
@Path("/users")
public class UsersResource {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String sayHello() {
return "Hello Jersey Today";
}
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public String createUser(User us)
{
//System.out.println("userdata " + us);
User user = new User("testUserName", "testPassword");
return user.toJson();
}
}
User class:
import .google.gson.Gson;
import .google.gson.GsonBuilder;
public class User
{
private String username;
private String password;
public User()
{
super();
}
public User(String name, String pass)
{
super();
this.username = name;
this.password = pass;
}
public User(String username)
{
this.username = username;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String toJson()
{
Gson gson = new GsonBuilder().setPrettyPrinting().create();
String json = gson.toJson(this);
return json;
}
}
And js code:
$(function () {
main = {
// Start updates
start: function(){
var user = {username: "test", password: "pass"};
var encoded = $.toJSON( user );
ajaxPost.ajaxRequest("TodoListing/rest/users", user,
function(data)
{
alert("success with data " + data);
},
function(jqXHR, textStatus, errorThrown) {
alert("error " + textStatus + "/" + errorThrown);
});
}
},
// Ajax request.
ajaxPost = {
ajaxRequest: function(service, data, successSelector, errorSelector) {
$.ajax({
type: 'POST',
url: ajaxPost.serverURL + service,
data: data,
contentType: "application/json",
dataType: "application/json",
success: successSelector,
error: errorSelector
});
},
serverURL: 'http://localhost/',
};
});
JS always returns error without description(empty errorThrown) and jersey logs an error on request:
PM .sun.jersey.server.wadl.generators.WadlGeneratorJAXBGrammarGenerator attachTypes
INFO: Couldn't find JAX-B element for class java.lang.String
Share
Improve this question
edited May 12, 2012 at 14:02
Olga Dalton
asked May 12, 2012 at 12:19
Olga DaltonOlga Dalton
8493 gold badges15 silver badges25 bronze badges
1
- Try using Poster or curl instead of JS to make a request, so you can determine if it's really the server that's the problem. – Ryan Stewart Commented May 12, 2012 at 15:03
2 Answers
Reset to default 7I run into the same problem with jersey and grizzly getting the same error all the time. After 2 weeks of research it appears that this problem relates to CORS (cross domain) difficulties.
The solution that works for me was a filter that gives some additional information to the response header:
import .sun.jersey.spi.container.ContainerRequest;
import .sun.jersey.spi.container.ContainerResponse;
import .sun.jersey.spi.container.ContainerResponseFilter;
class CORSFilter implements ContainerResponseFilter {
@Override
public ContainerResponse filter(ContainerRequest request, ContainerResponse response) {
// instead of "*" you should provide a specific domain name for security reasons
response.getHttpHeaders().add("Access-Control-Allow-Origin", "*");
response.getHttpHeaders().add("Access-Control-Allow-Methods", "PUT, GET, POST, DELETE, OPTIONS");
response.getHttpHeaders().add("Access-Control-Allow-Headers", "Content-Type");
return response;
}
}
introducing the filter to grizzly:
...
ResourceConfig rc = new ClasspathResourceConfig("my.resource.package");
rc.getContainerResponseFilters().add(new CORSFilter());
return GrizzlyServerFactory.createHttpServer("http://base_uri", rc);
...
Maybe you can adopt this to tomcat.
if you are using Glassfish server, then you need to set .sun.enterprise.overrideablejavaxpackages
to JVM. Moreover there is a thread here:
MultivaluedMap exception
Hope this will help you.
本文标签: javaWhat is wrong with this requestStack Overflow
版权声明:本文标题:java - What is wrong with this request? - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1744173153a2593879.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论