У меня есть 2 похожих веб-формы, которые отправляют данные в мое приложение Java. Две отдельные функции обрабатывают этот запрос POST, но они точно такие же. Но, одна форма POSTs успешно пока другая не делает и выдает ошибку HTTP 405.HTTP 405 Ошибка, вызванная приложением на Apache Tomcat
В том числе HTML кода формы:
<form action="BiApi/a/b" method="post" id="formquery" name= "makeQuery">
<!----Text Boxes---->
<input type="submit" value="Query" onclick="if(this.value=='Query'){ this.value='Wait processing query...'; this.style.color='#000';}"/>
</form>
Java функции, которая обрабатывает запрос
@POST
@Path("/b")
@Produces({"text/csv"})
public String b(
@FormParam("reportType") int reportType,
@FormParam("preStart") String preStart,
@FormParam("preEnd") String preEnd
){
try {
CampaignQueryDto campaignQueryDto = new CampaignQueryDto();
campaignQueryDto.setReportType(reportType);
campaignQueryDto.setPreEnd(preEnd);
campaignQueryDto.setPreStart(preStart);
if (campaignQueryDto.isAuthorized()) {
return csvForDto(campaignDao.xyz(campaignQueryDto));
} else {
throw new UnauthorizedException();
}
} catch (SQLException ex) {
throw new WebApplicationException(404);
}
}
/*..Method 2 ..*/
@POST
@Path("/bUK")
@Produces({"text/csv"})
public String bUK(
@FormParam("reportType") int reportType,
@FormParam("preStart") String preStart,
@FormParam("preEnd") String preEnd){
try {
CampaignQueryDto campaignQueryDto = new CampaignQueryDto();
campaignQueryDto.setReportType(reportType);
campaignQueryDto.setPreEnd(preEnd);
campaignQueryDto.setPreStart(preStart);
if (campaignQueryDto.isAuthorized()) {
return csvForDto(campaignDao.xyzUK(campaignQueryDto));
} else {
throw new UnauthorizedException();
}
} catch (SQLException ex) {
throw new WebApplicationException(404);
}
}
Мой web.xml
<web-app id="WebApp_ID" version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>abc</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>jersey-serlvet</servlet-name>
<servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.argusinformation.rest</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>jersey-serlvet</servlet-name>
<url-pattern>/BiApi/*</url-pattern>
</servlet-mapping>
Единственное различие в коде для 2 формы - это имя функции Java. то есть, если один из них равен b, то другой является bUK.
Один возвращает результат, в то время как другой дает ошибку 405 после отправки формы.
Любые потенциальные решения?
Спасибо!
Не могли бы вы разместить ваши аннотации обоих методов, используемые отдельно. – SachinSarawgi
Привет @SachinSarawgi: Я представил оба метода с их аннотациями в моем вопросе. – krazzy12
"* Единственная разница в коде для двух форм - это имя функции Java, то есть если один из них b, то другой - bUK. *" .. Я сомневаюсь в этом .. Можете ли вы поместить точный код HTML-формы, который вы используя .. – hagrawal