2017-09-27 8 views
0

"POST"メソッドを使用してJava Rest Webサービスを実行しようとしていますが、渡されたパラメータにアクセスできません。ここで私のクライアントはWebサービスを呼び出す部分です。ポストメソッドによるJava Rest Webサービス

public static void main(String[] args) { 

     try { 

      Client client = Client.create(); 

      WebResource webResource = client.resource("http://localhost:8080/wsRevDash/rest/post/testing"); 


      Form form=new Form(); 

      form.add("sc","pqr"); 



      ClientResponse response = webResource.type("application/json") 
       .post(ClientResponse.class,form); 

      if (response.getStatus() != 201) { 
       throw new RuntimeException("Failed : HTTP error code : " 
        + response.getStatus()); 
      } 

      System.out.println("Output from Server .... \n"); 
      String output = response.getEntity(String.class); 
      System.out.println(output); 

      } catch (Exception e) { 

      e.printStackTrace(); 

      } 

     } 

ここに私のJava Rest Webサービスがあります。

@POST 
    @Path("testing") 
    @Consumes(MediaType.APPLICATION_JSON) 
    @Produces(MediaType.APPLICATION_JSON) 
    public String createDataInJSON(@FormParam("sc") String data) { 

     System.out.println("Hello"+data); 
     JSONObject jObjDevice = new JSONObject(); 


     jObjDevice.put("Hello",data); 
     return jObjDevice.toJSONString(); 

    } 

私がSoapUIで実行すると、{"Hello":null}が表示されます。 これに対処する方法を教えてください。

String input = new Gson().toJson(form); 

をし、応答にinputを渡す:

+0

SOAPUI ...残り:

WebResource webResource = client.resource("http://localhost:8080/wsRevDash/rest/post/testing"); <---- here 

とは、Webサービスでは、それの前にスラッシュが含まれます。なぜその混合?残りの部分をテストするにははるかに優れたツールがあります。 手順1:(デバッグ時に)休憩サービスを実行し、残りのクライアントを使用して連絡を取ろうとします。それがうまくいけば、次の手順に進みます。 – Stultuske

+0

Webサービスは、パラメータを渡すことなく正常に動作しますが、パラメータにアクセスするのは困難です。 –

+0

がパラメータのタイプかもしれません。 PathParamまたはRequestParamを試してみましたか? – Stultuske

答えて

0

Stringformを変更してみてください

ClientResponse response = webResource.type("application/json") 
       .post(ClientResponse.class,input); 

など何かにWebサービスを改正:

@POST 
@Path("/post") 
@Consumes(MediaType.APPLICATION_JSON) 
    public Response createDataInJSON(String data) { 
    String result = "Hello: " + data; 
    return Response.status(200).entity(result).build(); 
} 

そして、あなたはあなたのから 'テスト'を削除する必要がありますitialパス:

@Path("/testing") 
+0

あなたのパスが「テスト/テスト」ではないと仮定しています。 – notyou

関連する問題