2017-06-28 21 views
0

Javaで再生フレームワークでAPI呼び出しを呼び出せません。 コードは良いように見えますが、API呼び出しがトリガされていませんでした(API呼び出しはPostmanで正常に機能しています)。私はそれがスレッドに関連する問題かもしれないと思うし、私はプレイフレームワークで非同期タスクを書くことができない、誰かが私を助けてください。 ベストを狙う!前もって感謝します! json bodyを使用したPOST REST API呼び出しがJavaの再生フレームワークで機能していません

はどうやら、あなたはHTTPリクエストのためにプレイコマンドを使用していないコントローラファイル

public Result updateTripDetail() { 
//few statements; 
      String url = "https://medicines-XXX/MZIMRestServicesXXX/v1/XXXX"; 
      JSONObject jsonBody = new JSONObject(); 
      jsonBody.put("source_type", "XXX"); 
      jsonBody.put("omorder_id", "25852"); 
      if (Rescheduled.equals(ride.getRideStatus())) { 
       jsonBody.put("order_status", "RequestForReschedule"); 
      } else if (RideCancelled.equals(ride.getRideStatus())) { 
       jsonBody.put("order_status", "RequestForCancel"); 
      } else { 
       jsonBody.put("order_status", ride.getRideStatus()); 
      } 
      jsonBody.put("last_updated_on", new Date()); 
      apiPostCall(url,jsonBody.toString()); 
    return redirect("/ride/rideList"); 
} 

public void apiPostCall(String completeUrl, String body) { 
    HttpClient httpClient = new DefaultHttpClient(); 
    HttpPost httpPost = new HttpPost(completeUrl); 
    httpPost.setHeader("Content-type", "application/json"); 
    try { 
     StringEntity stringEntity = new StringEntity(body); 
     httpPost.getRequestLine(); 
     httpPost.setEntity(stringEntity); 
     httpClient.execute(httpPost); 
    } catch (Exception e) { 
     throw new RuntimeException(e); 
    } 
} 
+0

を次のようにあなたのコードはすべきですか? https://www.playframework.com/documentation/2.2.x/JavaWS –

+0

問題が発生しているコードはPlayフレームワークの一部ではなく、これらのクラスについては何も指定していません。実際の問題/エラーが何であるかは、むしろあいまいです。あなたがこれらのことを明らかにすれば、それは助けになるでしょう。 – gpgekko

+0

デバッグを試しましたか?実行すると、実行呼び出しに到達するのですか? – Jaanus

答えて

0

に呼び出すAPIのコードを見つけます。あなたはWS APIを使用していないのはなぜ

public void updateTripDetail() { 
//few statements; 
      String url = "https://medicines-XXX/MZIMRestServicesXXX/v1/XXXX"; 
      JSONObject jsonBody = new JSONObject(); 
      jsonBody.put("source_type", "XXX"); 
      jsonBody.put("omorder_id", "25852"); 
      if (Rescheduled.equals(ride.getRideStatus())) { 
       jsonBody.put("order_status", "RequestForReschedule"); 
      } else if (RideCancelled.equals(ride.getRideStatus())) { 
       jsonBody.put("order_status", "RequestForCancel"); 
      } else { 
        jsonBody.put("order_status", ride.getRideStatus()); 
       } 
       jsonBody.put("last_updated_on", new Date()); 
       apiPostCall(url,jsonBody.toString()); 
     //As an asynchronous request it would 
     //probably redirect before completing your request so void it's okay 
     //return redirect("/ride/rideList"); 
    } 

public Promise<Result> apiPostCall(String completeUrl, String body) { 
     return WS.url(completeUrl) 
       .setHeader("Content-Type", "application/json") 
       .post(body).map(
         new F.Function<WS.Response, Result>() { 
          public Result apply(WS.Response response) { 
           //you can handle your response here 
           //String token = response.asJson().findPath("access_token").asText(); 
           return redirect("/ride/rideList"); 
          } 
         } 
       ); 
    } 
関連する問題