2017-09-22 19 views
0

"POST"メソッドを使用してJava Rest Webサービスを実行しようとしています.Webサービスを呼び出すためのクライアント部分が正常に動作しています。しかし、渡されたパラメータに "POSTどのような助けにも感謝するでしょう。ここ は私のクライアント側はポストを使用したJava Rest Webサービス

public static void main(String[] args) throws IOException 
{ 
    String urlParameters = "param1=world&param2=abc&param3=xyz"; 

    String request = "http://localhost:8080/wsRevDash/rest/post/test"; 

    URL url = new URL(request); 

    HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
    conn.setDoOutput(true); 
    conn.setInstanceFollowRedirects(false); 
    conn.setRequestMethod("POST"); 
    conn.setRequestProperty("charset", "utf-8"); 
    DataOutputStream wr = new DataOutputStream(conn.getOutputStream()); 
    wr.writeBytes(urlParameters); 
    wr.flush(); 
    wr.close(); 
    Reader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8")); 
    System.out.println("\nSending 'POST' request to URL : " + url); 
    System.out.println("Post parameters : " + urlParameters); 

    for (int c; (c = in.read()) >= 0;) 
     System.out.print((char)c); 
} 

であり、ここで(アクセスできません)パラメータにアクセスするには、私のJavaのREST Webサービスメソッドです。私は実行すると

@POST 
    @Path("/test") 
    @Produces(MediaType.APPLICATION_JSON) 


    public String getpostdata(@QueryParam("param1") String param1,@QueryParam("param2") String param2) 
    { 

     JSONObject jObjDevice = new JSONObject(); 

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

    } 

、私は取得しています {「こんにちは」:ヌル}の代わりに、JSON文字列として{「こんにちは」:「世界」}ヌルは、渡されたparameters.Pleaseにアクセスするためにunaleであることを意味取得。助けてください。

答えて

0

@QueryParamを以下に示すように使用できます。

public String getpost(@QueryParam("param1") String param1, 
         @QueryParam("param2") String param2){ 
    // Access both param below 
} 
0

POSTリクエストを使用してデータを送信するのはかなり簡単です。

代わりconn.getOutputStream().write(postDataBytes);のあなたは、データ

import java.io.DataOutputStream; 
import java.io.IOException; 
import java.net.HttpURLConnection; 
import java.net.URL; 
import java.nio.charset.StandardCharsets; 

public static void main(String[] args) throws IOException 
{ 
    Map<String, String> params = new LinkedHashMap<String, String>(); 
    params.put("param1", "hello"); 
    params.put("param2", "world"); 

    JSONObject myJSON = new JSONObject(params); 

    System.out.println(myJSON); 

    byte[] postData = myJSON.toString().getBytes(StandardCharsets.UTF_8); 

    int postDataLength = postData.length; 

    String request = "http://localhost:8080/wsRevDash/rest/post/test"; 

    URL url = new URL(request); 

    HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
    conn.setDoOutput(true); 
    conn.setInstanceFollowRedirects(false); 
    conn.setRequestMethod("POST"); 
    conn.setRequestProperty("Content-Type", "application/json"); 
    conn.setRequestProperty("charset", "utf-8"); 
    conn.setRequestProperty("Content-Length", Integer.toString(postDataLength)); 

    //Try with Resources Example, just giving you an option 
    // try (DataOutputStream wr = new 
    // DataOutputStream(conn.getOutputStream())) 
    // { 
    // wr.write(postData); 
    // } 

    DataOutputStream wr = new DataOutputStream(conn.getOutputStream()); 
    wr.write(postData); 
} 

注送信するためにDataOutputStreamを使用する必要があります:あなたはあなたの要求でapplication/jsonヘッダを送っているのが、私はあなたのコードでJSONは表示されません。唯一の

あなたが好きJSONObjectに直接HashMapを変換することができ便利なヘッダを送信するために

org.json.JSONObject jsonObject = new org.json.JSONObject(params); 

ことをお勧めします。しかし、WebサービスでパラメータにアクセスするにはMap<String, String>

ため、この唯一の作品は、あなたがする必要がありますMap<String, String>を受け入れる代わりにJSONObjectを受け入れます。

public String getpost(JSONObject params) throws JSONException 
{ 
    if(params.has("param1")) 
     System.out.println(params.getString("param1")); 

    if(params.has("param2")) 
     System.out.println(params.getString("param2")); 

    //IMPLEMENT YOUR LOGIC HERE AND THEN RETURN STRING 
    return "your_return string"; 
} 
+0

コードを共有していただきありがとうございます。私のウェブメソッドでは何が必要ですか? –

+0

'conn.getOutputStream()。write(postDataBytes);の代わりに、' DataOutputStream wr = new DataOutputStream(conn.getOutputStream());を使う必要があります。 wr.write(postData); 'データを送信する –

+0

コードを更新して、この方法で助けてください。 –

関連する問題