2016-08-31 12 views
1

Restletを使用して一連のRESTサービスをJavaで作成しました。これらのサービスの大半はJSONを使用しており、GETリクエストを使用してSOAP UIを使用してそれらにアクセスするのに問題はありません。しかし、SOAP UIを使用してPOSTベースのサービスにアクセスしようとすると、Representationエンティティパラメータは常にnullです。私はStack OverflowとWebを検索しましたが、私がまだやっていない、あるいは私の問題に対処しているものは何も見つかりませんでした。ここでSOAP UIからPOSTを使用してRestletサービスにアクセスできない

は常にnull entityを受けるように思わPOSTリソースのコードです:

public class CreateAccountResource extends ServerResource { 
    @Post("json") 
    public Representation createAccount(Representation entity) throws IOException { 
     String message = null; 
     boolean result = true; 

     try { 
      String post = entity.getText(); 
      Object obj = new JSONParser().parse(post); 
      JSONObject jsonObject = (JSONObject) obj; 

      String username = (String) jsonObject.get("username"); 
      String password = (String) jsonObject.get("password"); 
      String email = (String) jsonObject.get("email"); 

      // more code 
     } 
     catch (Exception e) { 
      // handle exception here 
     } 
    } 
} 

そしてここでは、要求を送信するときに私が使用した構成を示す私のSOAP UIからのスクリーンショットですあなたが思っている場合には

enter image description here

、私はentityの値を検査するデバッグモードでのIntelliJを使用していて、プロジェクトがMavenを使用しています。

+0

POSTリクエストと言ったら、スクリーンショットでリクエストを見たことがありませんか? – Rao

答えて

1

私は、しかし、私はあなたがあなたのcreateAccount方法について@Post("json")アノテーションを指定するのでと思いのRestletを使用することはありません。このメソッドは、クエリパラメータとして値を渡すのではなく、POST本文のjsonを待機しています。

だから、おそらく、あなたのURLへPOSTコールhttp://localhost:8080/MyApp/service/createAccountjsonとして体内でパラメータを渡すにクエリパラメータを使用して、実際のPOSTを変更する必要があります。

:SOAPUI

{ 
     "username" : "tim", 
     "password" : "password", 
     "email" : "[email protected]" 
} 

のようなものかもしれません

enter image description here

希望すると、

+0

私は今夜これをテストし、もしうまくいけば、あなたは25点を得ています。 –

+0

ok @TimBiegeleisenフィードバックをお願いします(この問題があなたの問題を解決することを願っています): – albciff

+0

これは本当に有益な答えです。私はすべてのWebサービスをエンドツーエンドでテストすることができますGETのもの)。再度、感謝します。 –

関連する問題