2017-01-03 18 views
-2

単純な端末クライアントから投稿要求を呼び出す方法を教えてもらえますか?クライアントで単純な端末クライアントからのジャージPOSTリクエスト

@POST 
    @Path("insertt") 
    public void insert(@QueryParam("id") Integer id, 
         @QueryParam("name") String name, 
         @QueryParam("lastname") String lastname, 
         @QueryParam("adress") String adress, 
         @QueryParam("city") String city) { 
     Customer cust = new Customer(); 
     cust.setCustomerId(id); 
     cust.setName(name); 
     cust.setLastNAme(lastname); 
     cust.setAddressline1(adress); 
     cust.setCity(city); 
     customerDAO.add(cust); 
    } 

私が行います

Client c = ClientBuilder.newClient(); 
WebTarget resource = c.target("http://localhost:8080/WebService/webresources/generic/insertt?id=100&name=test&lastname=test&adress=test&city=test"); 
//resource.request().post(); // This does not work 
+0

でテストされましたか?どのような例外がありますか? –

+1

あなたはcurlコマンドを試しましたか? –

+0

@ MaximDobryakov私は例外が表示されません私はクライアントから要求を送信する方法を知りません。私はURLとリソースを持っていますが、どのようにクライアントからリクエストを送信するのですか? – kvway

答えて

1
  1. あなたはポストのデータが(それはあなたが行ったようにURLに付加していない意味)要求本文としてではなく、クエリのparamとして送信されますので、@QueryParamが動作しませんPOSTデータを送信しようとしているので。

    @POST 
    @Consumes(MediaType.APPLICATION_FORM_URLENCODED) 
    @Path("insertt") 
    public void insert(@FormParam("id") Integer id, 
            @FormParam("name") String name, 
            @FormParam("lastname") String lastname, 
            @FormParam("adress") String adress, 
            @FormParam("city") String city) { 
    
    Customer cust = new Customer(); 
    cust.setCustomerId(id); 
    ... 
    customerDAO.add(cust); 
    

    }

  2. を、次のようにクライアントを変更します:あなたは、リソースの方法を変更する必要がありますので、以下のように

    Client client = ClientBuilder.newClient(); 
    WebTarget target = client.target("http://localhost:8080/WebService/webresources/generic").path("insertt"); 
    Form form = new Form().param("id", "100").param("name", "test").param("lastname", "test").param("address", "test").param("city", "test"); 
    Response response = target.request().post(Entity.form(form)); 
    

この例では、ちょうどHTMLのフォームの送信をシミュレートしています。 XMLやJSONなどの形式でデータを送信する場合は、JAX-RSのドキュメントを参照する必要があります。ネットにはたくさんのリソースがあります。ここではいくつかの例のサイトでは、以下のとおりです。

注:例は動作しませんどのようなジャージー2.23とWildfly 8.2.1

0

文書hereとしてcurlコマンドを使用します。

...、前に満たされた同じデータでこのフォームを投稿するカールを使用、 は次のようになります。

curl --data "birthyear = 1905 & press =%20OK%20 " http://www.example.com/when.cgiこの種類のPOSTでは、 コンテンツタイプアプリケーション/ x-www-form-urlencodedが使用され、最も広くはPOSTタイプの が使用されています。

サーバーに送信したデータは、正しくエンコードされている必要があります。カール はそれを行いません。たとえば、データに のスペースが含まれるようにするには、そのスペースを%20などに置き換える必要があります。 に準拠していないと、データが に間違って入力されてしまいます。

最近のカールのバージョンすることができ、実際に このようなあなたのためでurlencode POSTデータ、:

カール--data-でurlencodeあなたが--data、数回繰り返す 場合http://www.example.com「名前=私はダニエルです」コマンドライン、カール はすべての指定されたデータを連結し、各データセグメントの間に '&'シンボルを の間に入れます。

関連する問題