2017-02-13 10 views
0

У меня есть 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 после отправки формы.

Любые потенциальные решения?

Спасибо!

+0

Не могли бы вы разместить ваши аннотации обоих методов, используемые отдельно. – SachinSarawgi

+0

Привет @SachinSarawgi: Я представил оба метода с их аннотациями в моем вопросе. – krazzy12

+0

"* Единственная разница в коде для двух форм - это имя функции Java, то есть если один из них b, то другой - bUK. *" .. Я сомневаюсь в этом .. Можете ли вы поместить точный код HTML-формы, который вы используя .. – hagrawal

ответ

0

Как указано в SachinSarawgi, можете ли вы предоставить нам хотя бы оба метода, которые вы использовали (в соответствии с общей политикой и/или конфиденциальностью исходного кода приложения и т. Д., Которые запрещают вам предоставлять свою завершенную версию)?

EDIT. Похоже, вы забыли добавить строку campaignQueryDto.setReportType(reportType); в свой код первого метода. Крепление должно помочь.

+0

Hi. Я редактировал свой код, чтобы добавить оба метода. – krazzy12

+0

Я представил оба метода своими аннотациями в моем отредактированном вопросе – krazzy12

+0

Теперь мы говорим :) – TheInvisibleMan