2017-05-14 22 views
1

を書く、私は次のようになり、プロジェクトの構造を、得た私のアプローチが良いか全く間違っている場合は、本当に知らないので、私と一緒に私はRESTfulなWebサービスを使用する方法を学んでいRESTfulなWebサービスを通じてJSONobjectに

を負担します:

enter image description here

私は右のURLを呼び出してしたい、ここでDatum.Json

に応じて文字列を保存したWebServiceの私のJavaクラスです。

package Rest; 

@Path("/calendar") 
public class CalendarTest { 
    public List<Date> dates; 
    @GET 
    @Path("/dates/get/") 
    @Produces(MediaType.APPLICATION_XML) 
    public List<Date> getUsers(){ 
     return dates; 
    } 
    @PUT 
    @Path("/dates/put/{param1}+{param2}") 
    @Produces(MediaType.APPLICATION_JSON) 
    @Consumes(MediaType.APPLICATION_JSON) 
    public void updateDate(@PathParam("param1") String city, @PathParam("param2") String date) throws IOException {  
     JSONObject obj = new JSONObject(); 
     obj.put("City", city); 
     obj.put("Date", date); 
     try (FileWriter file = new FileWriter("/RestTest/Datum.json")) { 
      file.write(obj.toJSONString()); 
      System.out.println("Successfully Copied JSON Object to File..."); 
      System.out.println("\nJSON Object: " + obj); 
     } 

    } 
} 

私は マイweb.xmlファイル(私は私のローカルホストでform.htmlを開くことができます)、それが正常に動作し、ローカルホストをテストした:

<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>Restful Web Application</display-name> 

    <servlet> 
     <servlet-name>jersey-serlvet</servlet-name> 
     <servlet-class> 
        org.glassfish.jersey.servlet.ServletContainer 
       </servlet-class> 
     <init-param> 
      <param-name>jersey.config.server.provider.packages</param-name> 
      <param-value>Rest</param-value> 
     </init-param> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>jersey-serlvet</servlet-name> 
     <url-pattern>/rest/*</url-pattern> 
    </servlet-mapping> 
    <security-constraint> 

</security-constraint> 
</web-app> 

しかし、私はURLを試してみましたhttp://localhost:8080/RestTest/rest/calendar/dates/put/Berlin+20-12-2019

それを方法が許可されていないと言います。

誰も私に説明することができますか?

答えて

3

ブラウザのURLを入力すると、デフォルトでHTTP GETリクエストが送信されるため、そのURLのGETリクエストハンドラがないためエラーが発生するため、 PUTリクエスト

ブラウザのデフォルトのリクエストタイプを変更することはできません。あなたがしなければならないことは、フロントエンド/ javascriptでjQueryのようなものを使ってリクエストを送信することです。

How to send a PUT/DELETE request in jQuery?

あなたは、Ajaxの方法で使用できますので、どのように私はPutメソッドにアクセスすることができ

$.ajax({ 
    url: '/rest/calendar/dates/put/Berlin+20-12-2019', 
    type: 'PUT', 
    success: function(result) { 
     // Do something with the result 
    } 
}); 
+0

を?ありがとう! –

+0

@TuấnPhạm1つのオプションはjQueryですが、AngularJSフレームワークもあります。 PUTではなくPOSTを使用する場合は、HTMLフォームを使用してリクエストを送信することができます – tima

関連する問題