2017-03-07 18 views
1

投稿を非同期的(jersy)にするにはどうすればいいですか?私はこのURLを非同期ポストコール(jersy)を作成する方法jersy postメソッドを非同期に呼び出す方法は?

public void callAPI(String url,int Id,long se_eln,String reportName String ,String startDate, String endDate){ 
       Map map= new HashMap(); 
       map.put("Id", Id); 
       map.put("reportName",reportNameString); 
       map.put("startDate", startDate); 
       map.put("endDate", endDate); 
       map.put("accountId", se_eln); 
       try { 
        //System.out.println("calling post method"); 
        String str = new ObjectMapper().writeValueAsString(dataMismatchMap); 
    // 
        //PostMethod postMethod = new PostMethod(url); 
        PostMethod postMethod = new PostMethod(url); 
        RequestEntity requestEntity = new StringRequestEntity(str); 
        postMethod.setRequestEntity(requestEntity); 
        postMethod.setRequestHeader("Content-Type", "application/json;charset=utf-8"); 

        HttpClient httpclient = new HttpClient(); 
        int result = httpclient.executeMethod(postMethod); 
        //System.out.println("result is "+result); 
        webre 
       } catch (MalformedURLException e) { 
        e.printStackTrace(); 

       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
      } 

からの応答を取得する必要はありませんか?私はこのURLからの応答を取得したくありません

+0

あなたは 'jersey'について話しますが、あなたのコードでは' Apache HTTP Client'を使用しているようです。 – yinon

答えて

0

私はあなたがすでにそれを使用して見ることができるように、私はapacheのhttpクライアントで非同期的な呼び出しを行う方法があると思う。単純なスレッドでリクエストを呼び出すことができます。 httpクライアント経由で非同期呼び出しを行うと、答えが更新されます。

0

これは取得用ですが、ポストリプレース.rx()。get();を使用するように変更できます。 rx()。post(...);

rx.Observable<Response> observable = Rx.newClient(RxObservableInvoker.class) 
//    .target("http://javaresteasydemo-ravikant.rhcloud.com/rest/hello/getDataNoZip/") 
       .target("http://jerseyexample-ravikant.rhcloud.com/rest/jws/getDataAsClient") 
       .register(JacksonFeature.class).request().header("key", "12345").rx().get(); 

     observable.subscribe(new Action1<Response>() { 

      @Override 
      public void call(Response response) { 
       try { 
        System.out.println(" Inside call "); 
        // System.out.println(response.readEntity(List.class)); 
        //List<java.util.LinkedHashMap> lst = response.readEntity(List.class); 
        ObjectMapper ob = new ObjectMapper(); 
        List<User> pojos = ob.convertValue(response.readEntity(List.class), new TypeReference<List<User>>() { 
        }); 
        for (User user : pojos) { 
         System.out.println(user.getPost()); 
        } 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
       System.exit(0); 
      } 

     }); 
関連する問題