[英]RestEasy Service Returning Different response for Browser Request and Java Client Request
我寫了一個resteasyspring服務:
@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),輸出仍保持不變,並且永遠不會拋出錯誤...
這種情況下的問題似乎是由於在控制應用程序的web.xml中配置的“ 過濾器 ”引起的。 因此,所有對/ *的請求都被重定向到歡迎頁面。 從web.xml文件中刪除過濾器配置解決了該問題,並且Java Rest API的響應“成功”與來自瀏覽器的響應相同。 盡管我仍然不清楚為什么過濾器不會影響瀏覽器的請求,但會影響Java Client的請求。 無論如何,希望這對可能正在努力解決類似問題的其他人有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.