POST Anfrage zur REST-API mit JSON-Objekt als payload

Ich versuche, um die JSON-Antwort der REST-API mithilfe der POST-Anforderung, die JSON-payload (sollte umgewandelt werden in URL-codierten text vor dem senden). Ich habe einige Anleitungen, den Prozess zu implementieren, aber ich bekomme Fehler mit status-code 400. Ich kann nicht Codierung der angegebenen JSON-string oder etwas fehlt. Bitte helfen Sie mir dieses problem zu lösen. Danke.

Hier ist mein code

    try {
        URL url = new URL("https://appem.totango.com/api/v1/search/accounts/health_dist");
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setDoOutput(true);
        conn.setRequestMethod("POST");
        conn.setRequestProperty("Content-Type", "application/json");
        conn.setRequestProperty("app-token", "1a1c626e8cdca0a80ae61b73ee0a1909941ab3d7mobile+testme@totango.com");
        conn.setRequestProperty("Accept", "application/json, text/javascript, */*; q=0.01");
        conn.setRequestProperty("X-Requested-With","XMLHttpRequest");

        String payload = "{\"terms\":[{\"type\":\"totango_user_scope\",\"is_one_of\":[\"[email protected]\"]}],\"group_fields\":[{\"type\":\"health\"}]}";

        OutputStream os = conn.getOutputStream();
        os.write(payload.getBytes());
        os.flush();

        if (conn.getResponseCode() != HttpURLConnection.HTTP_CREATED) {
            throw new RuntimeException("Failed : HTTP error code : "
                    + conn.getResponseCode());
        }

        BufferedReader br = new BufferedReader(new InputStreamReader(
                (conn.getInputStream())));

        String output;
        System.out.println("Output from Server .... \n");
        while ((output = br.readLine()) != null) {
            System.out.println(output);
        }
        conn.disconnect();
    } catch (MalformedURLException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
  • Sind Sie immer eine Antwort Körper sowie die 400-Statuscode?
  • Nein, nur den status-code.
  • Sie fordern keine conn.connect() nach deinem os.flush(), ich denke, dass könnte das Problem sein
  • Hinzugefügt conn.connect() ist aber immer noch die gleiche exception.
  • Ich habe gerade versucht deinen code, wenn ich entfernen, conn.RequestProperty("app-token", bekomme ich die Fehlermeldung 401 Unauthorized, aber wenn ich habe es zurück, ich bekomme die 400-Fehler bad request. so, es hat etwas zu tun mit app-token
  • Ja. Aber bekomme ich Antwort, wenn ich Briefträger - Erweiterung.

InformationsquelleAutor Prudhvi | 2015-03-05
Schreibe einen Kommentar