1

私は 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 アプリケーションのウェルカム ページである 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 クライアントは機能しませんでした。奇妙なことに、最初の部分 (http://localhost:8080/ControlAppWeb) を除いて (Java クライアントで) URL をランダムに変更しても、出力は同じままで、エラーがスローされることはありません...

4

1 に答える 1

0

この場合の問題は、制御アプリケーションの web.xml で構成された「フィルター」が原因で発生しているように見えました。/* へのすべてのリクエストがウェルカム ページにリダイレクトされていたためです。web.xml ファイルからフィルター構成を削除すると問題が解決し、Java Rest API の応答はブラウザーからの呼び出しと同じ「成功」でした。フィルタがブラウザからのリクエストに影響を与えなかった理由についてはまだ不明ですが、Java クライアントからのリクエストには影響を与えました。とにかく、これが同様の問題に苦しんでいる可能性のある他の人に役立つことを願っています.

于 2012-11-18T17:11:26.133 に答える