2012-04-09 6 views
1

私はJSONデータでPOSTメソッドを送信する必要があります。JSONオブジェクトをシリアル化してstringに送る必要があることを確認してください。 JSON文字列そのものではありません。どのようにすればJAVAを使って実装できますか?JSONデータ(Java)でPOSTメソッドを送信するにはどうすればよいですか?

+1

GWTを使用していますか? –

+0

POSTの部分について:http://stackoverflow.com/questions/3324717/sending-http-post-request-in-java – Thilo

+1

そして、あなたはどういう意味ですか?JSONオブジェクトを文字列にシリアライズしました。 JSON文字列自体ではないのですか? –

答えて

0

Jersey GAEでうまく動作するRESTフレームワークの使用をお勧めします。 Hereはデモです。

1
public static String sendPostRequest(String postURL) throws Exception{ 
    String responseStr=null; 
    //make POST request 
    String jsonContent = "{'name': 'newIndia','columns': [{'name': 'Species','type': 'STRING'}],'description': 'Insect Tracking Information.','isExportable': true}"; 
    //String data = "{\"document\" : {\"_id\": \"" + id+ "\", \"context\":" + context +"}}"; 
    URL url = new URL(postURL); 
    HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 

    connection.setDoOutput(true); 
    connection.setDoInput(true); 
    connection.setInstanceFollowRedirects(false); 
    connection.setRequestMethod("POST"); 
    connection.setRequestProperty("Content-Type", "application/json"); 
    connection.setRequestProperty("charset", "utf-8"); 
    connection.setRequestProperty("Content-Length", "" + Integer.toString(jsonContent.getBytes().length)); 
    connection.setUseCaches(false); 

    OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream(), "UTF-8"); 
    writer.write(jsonContent);  
    writer.close(); 
    responseStr="Response code: "+connection.getResponseCode()+" and mesg:"+connection.getResponseMessage(); 

    System.out.println(connection.getResponseMessage()); 


    InputStream response;     

    // Check for error , if none store response 
    if(connection.getResponseCode() == 200){ 
     response = connection.getInputStream(); 
    }else{ 
     response = connection.getErrorStream(); 
    } 
    InputStreamReader isr = new InputStreamReader(response); 
    StringBuilder sb = new StringBuilder(); 
    BufferedReader br = new BufferedReader(isr); 
    String read = br.readLine(); 
    while(read != null){ 
     sb.append(read); 
     read = br.readLine(); 
    } 
    // Print the String  
    System.out.println(sb.toString()); 

    connection.disconnect(); 
    return responseStr; 
} 

詳細については、exampleを参照してください。

0

gsonを使用すると、JSONデータをWebサービスに簡単にPOSTできます。例えば

public class MyData {    //var myJsonData = { 
    private boolean fans = true;  //   fans:true, 
    private boolean funds = true; //   funds:true 
    //private String chart = "day"; //   } 
}          

今すぐリアルウェブサービスへのPOJOを送信:

public class Main { 

    public static void main(String... args) throws Exception { 

     URL theUrl = new URL("https://robertsspaceindustries.com/api/stats/getCrowdfundStats"); 
     Gson gson = new Gson(); 
     JsonParser jp = new JsonParser(); 
     MyData thedata = new MyData(); 

     HttpsURLConnection urlConnection = (HttpsURLConnection) theUrl.openConnection(); 
     urlConnection.setRequestMethod("POST"); 
     urlConnection.setDoOutput(true); //allow parameters to be sent/appended 

     DataOutputStream wr = new DataOutputStream(urlConnection.getOutputStream()); 
     wr.writeBytes(gson.toJson(thedata)); //convert the POJO to JSON, then to binary. 
     wr.flush(); 
     wr.close(); 

     urlConnection.connect(); //start request transmission 

     JsonElement retJson = jp.parse(new InputStreamReader((InputStream) urlConnection.getContent())); //convert the input stream to a json element 
     System.out.println(retJson.getAsJsonObject()); 

     urlConnection.disconnect(); //end request transmission 
    } 
} 

返信をして:

{"success":1,"{"fans":910125,"funds":8410319141},"code":"OK","msg":"OK"} 

(注、同胞執筆時点でのcURLコマンドの貸し出し) - >

curl 'https://robertsspaceindustries.com/api/stats/getCrowdfundStats' --data-binary '{"fans":true,"funds":true}' 
関連する問題