gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 05:00:45 25 4
gpt4 key购买 nike

我写了一个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
  • 成功

但是当我尝试从 Rest Client API 调用它时,它会返回一个网页,该页面实际上是 Web 应用程序的欢迎页面,我在其中合并了 Rest 服务:

         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 调用时出错的地方

进一步:我尝试从服务中删除 Controller 和请求映射注释,但浏览器调用仍然有效,而 java Rest 客户端却没有。奇怪的是,即使我将 url 修改为任何随机的(在 java 客户端中),不包括初始部分(http://localhost:8080/ControlAppWeb),输出仍然保持不变,并且永远不会抛出错误...

最佳答案

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

关于java - RestEasy 服务对浏览器请求和 Java 客户端请求返回不同的响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13418686/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com