RestEasy服务返回浏览器请求和Java客户端请求的不同响应

时间:2012-11-16 14:34:51

标签: java web-services resteasy

我写了一份resteasy-spring服务:

    @Controller
    @RequestMapping("/abr/asd")
    @Path("/ab/ac")
    public class JobSchedulerService {

        private static final Logger LOGGER = Logger.getLogger(JobSchedulerService.class);

        @GET
        @Path("/abc/{param}")
        public String scheduleJobs(@PathParam("param") String name) {
            return "Success";
        }
    }

当我尝试从浏览器调用此服务时,响应是正确的:

http://localhost:8080/ControlAppWeb/rest/ab/ac/abc/name
  • Success

但是当我尝试从Rest Client API调用它时,它返回一个网页,这实际上是我已经包含其余服务的Web应用程序的欢迎页面:

         try {
         URL url = new URL("http://localhost:8080/WebApp/rest/ab/ac/abc/name");
         HttpURLConnection conn = (HttpURLConnection) url.openConnection();

         conn.setRequestMethod("GET");
         conn.setRequestProperty("Accept", "application/json");

         if (conn.getResponseCode() != HttpURLConnection.HTTP_OK) {
         throw new RuntimeException("Failed! " + conn.getResponseCode());
         }
         BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
         String output;

         System.out.println("Output from Server is: ");
         while ((output = br.readLine()) != null) {
         System.out.println(output);
         }
         conn.disconnect();     
         } catch (MalformedURLException e) {        
         e.printStackTrace();
         } catch (IOException e) {      
         e.printStackTrace();       
         }

请帮助我,从Java API调用我在哪里出错

此外:我尝试删除控制器并请求从服务映射注释,仍然浏览器调用工作,而java rest客户端没有。奇怪的是,即使我将url修改为随机(在java客户端中)除了初始部分(http:// localhost:8080 / ControlAppWeb)之外的任何内容,输出仍保持不变,并且永远不会抛出错误... < / p>

1 个答案:

答案 0 :(得分:0)

这种情况下的问题似乎是由于在控制应用程序的web.xml中配置了“过滤器”而引起的。因此,/ *的所有请求都被重定向到欢迎页面。从web.xml文件中删除过滤器配置解决了问题,并且Java Rest API的响应与从浏览器调用的响应相同。虽然我仍不清楚为什么过滤器不会影响来自浏览器的请求但是对Java Client的请求这样做了。 无论如何希望这可以帮助那些可能在遇到类似问题的人。