我正在尝试使用Tomcat 7和Jersey 2构建一个简单的REST JSON api。所有的工作都做得很好。但投递/推杆返回了令人恐惧的405。
我知道这是一个很受欢迎的问题。但我已经研究了所有其他答案,它们对我的情况没有帮助。
我正在本地Linux工作站上运行它。我正在使用真正的Oracle JDK、Eclipse Mars、Tomcat 7和Maven来处理依赖关系。
作为同一个应用程序的一部分,我还有一个常规的jsp/servlet接口,可以很好地执行CRUD操作。因此,POST正在为servlet工作。
当POST/PUT失败时,在tomcat日志中没有它连接的记录。我正在使用Chrome中的POSTMAN应用程序来生成请求。
我试过各种各样的排列方式,但都没有效果。我怀疑查看代码并不会给出一个简单的答案。但它就在下面。
有人能建议一种调试方法吗?如果它在服务器上没有失败。它要去哪里?
提前非常感谢
我正在使用Servlet 3,因此无需在web.xml中定义它
从DAO回来的所有东西都在工作,所以我将跳过这些代码。。。
重新应用程序。JAVA
package resources;
import javax.ws.rs.ApplicationPath;
import org.glassfish.jersey.server.ResourceConfig;
@ApplicationPath("rest")
public class RestApplication extends ResourceConfig {
public RestApplication() {
packages("resources");
}
}
人物esource.java
package resources;
import java.util.List;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import org.apache.commons.lang3.StringUtils;
import com.mongodb.MongoClient;
import com.mongodb.MongoClientURI;
import dao.PersonDAO;
import model.Person;
@Path("/persons")
public class PersonResource {
private MongoClientURI cs;
private MongoClient mc;
private PersonDAO personDAO;
public PersonResource() {
super();
cs = new MongoClientURI("mongodb://localhost:27017");
mc = new MongoClient(cs);
personDAO = new PersonDAO(mc);
}
@Path("/")
@GET
@Produces(MediaType.APPLICATION_JSON)
public List<Person> getPersonsAll() {
List<Person> persons = personDAO.getAllPerson();
return persons;
}
@Path("/add")
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response addPerson(Person person) {
personDAO.createPerson(person);
return Response.status(201).build();
}
@Path("/get/{id}")
@GET
@Produces(MediaType.APPLICATION_JSON)
public Person getPersonById(@PathParam("id") String id) {
Person person = new Person();
if (StringUtils.isNotEmpty(id)) {
person.setId(id);
person = personDAO.getPerson(person);
}
return person;
}
}
由于某种原因,错误405突然变成了错误415-不支持的媒体类型。然后是因为POSTMAN没有正确设置标题。
然后我尝试了另一个Chrome应用程序高级REST客户端。。。一旦我为application/json指定了一个头,一切都开始工作了。
我怀疑这意味着这更多的是POSTMAN的问题,而不是代码。
有时你不得不问这个问题,以便找到自己的答案。。。
谢谢收听。
我有一个使用Jersey的非常简单的endpoint。我的URL是静态的,它不需要任何请求参数。看起来是这样的: 但是,每当我请求此URL时,我总是会收到一个HTTP状态代码405-方法不允许。 奇怪的是,如果我更改路径注释并定义一个路径变量,例如路径(“/图表/{blah}”),它就可以正常工作。 有人知道为什么我必须定义一个路径变量才能使其工作吗?我不需要路径变量,添加一个只是为了获得200响
我的代码是使用java servlet和JDBC存储和检索数据库中的信息。程序运行的IDE中没有错误,但行没有插入到数据库中,并且firefox浏览器中出现错误<以下代码来自SERVLET文件 以下代码来自HTML文件 以下代码来自web。xml文件 错误是:在firefox浏览器中获得的错误
问题内容: 经过研究后,我在问这个问题。我确实遵循了针对此类错误的解决方案,但对我不起作用。在下面的代码中出现错误的任何建议。我正在创建一个REST API,但是当我请求url时却出现405错误。下面是URI正在请求。 下面是代码片段。 web.xml: 问题答案: 将此更改为并尝试,
我制作了一个具有三个路径参数的POST web服务。 但当我尝试通过url请求此web服务时,我得到HTTP状态405-不允许使用该方法 但是同样的方法有效,如果我将Web服务更改为@GET 请求URL: 这是我得到的回应 任何帮助将不胜感激!
我有以下发帖方法, 我正在使用fiddler发布以下请求, 注意:还没有为spring配置安全性。
问题内容: 我打算使用Ajax将跨域请求发送到soap Web服务。Web服务的URL是:http://example1.asmx?op = GetVOD 我的代码: 在IIS 7服务器端,我已经将这些行添加到文件web.config中 当我在Chrome上运行客户端代码时,出现405错误: 有谁知道如何解决这个问题? 预先感谢 问题答案: 听起来像Web DAV正在阻碍。这是删除它的配置: ht