HTTP-POST-Requests mit JSON-String in JAVA

Ich einen http Post-Anforderung mit einer JSON-Zeichenfolge, die ich bereits generiert haben.
Ich habe versucht, verschiedene zwei verschiedene Methoden :

1.HttpURLConnection
2.HttpClient

aber ich bekomme die gleichen "unerwünschten" Ergebnis aus den beiden.
Mein code bisher mit HttpURLConnection ist:

public static void SaveWorkflow() throws IOException {
    URL url = null;
    url = new URL(myURLgoeshere);
    HttpURLConnection urlConn = null;
    urlConn = (HttpURLConnection) url.openConnection();
    urlConn.setDoInput (true);
    urlConn.setDoOutput (true);
    urlConn.setRequestMethod("POST");
    urlConn.setRequestProperty("Content-Type", "application/json");
    urlConn.connect();

    DataOutputStream output = null;
    DataInputStream input = null;
    output = new DataOutputStream(urlConn.getOutputStream());

                /*Construct the POST data.*/
    String content = generatedJSONString;

    /* Send the request data.*/
    output.writeBytes(content);
    output.flush();
    output.close();

    /* Get response data.*/
    String response = null;
    input = new DataInputStream (urlConn.getInputStream());
    while (null != ((response = input.readLine()))) {
        System.out.println(response);
        input.close ();
    }
}

Mein code bisher mit HttpClient ist:

public static void SaveWorkflow() {
    try {

        HttpClient httpClient = new DefaultHttpClient();
        HttpPost postRequest = new HttpPost(myUrlgoeshere);
        StringEntity input = new StringEntity(generatedJSONString);
        input.setContentType("application/json;charset=UTF-8");
        postRequest.setEntity(input);
        input.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE,"application/json;charset=UTF-8"));
        postRequest.setHeader("Accept", "application/json");
        postRequest.setEntity(input); 

        HttpResponse response = httpClient.execute(postRequest);

        BufferedReader br = new BufferedReader(
                        new InputStreamReader((response.getEntity().getContent())));

        String output;

        while ((output = br.readLine()) != null) {
            System.out.println(output);
        }

        httpClient.getConnectionManager().shutdown();

    } catch (MalformedURLException e) {

        e.printStackTrace();

    } catch (IOException e) {

        e.printStackTrace();

    }
}

Wo generiert JsonString ist wie folgt:

{"description":"prova_Process","modelgroup":"","modified":"false"}

Die Antwort, die ich bekommen ist:

{"response":false,"message":"Error in saving the model. A JSONObject text must begin with '{' at 1 [character 2 line 1]","ids":[]}

Jede Idee bitte?

  • Haben Sie versucht, nur konvertieren der Zeichenfolge in ein Objekt (das Parsen von JSON) ohne die HTTP-übertragung Schritt in der Mitte?
  • Versuchen Sie es mit generatedJSONString.trim()
  • sieht aus wie Sie verwenden möchten ein RESTful webservice; möchten Sie vielleicht, um Ihnen das Leben sehr einfach, indem die JAX-RS-API.
  • In der Tat ich zum ersten generieren des json als Objekt und konvertieren es te string ...
Schreibe einen Kommentar