Код состояния возврата вызова API SurveyMonkey 3 – Неверный запрос

РЕДАКТИРОВАТЬ: спасибо за предложения. Я изменил код для реализации объекта json вместо строки и отправил в теле

Это то, что я пытался получить подробности от обезьяны обзора. Я получаю код ответа как 200, но не могу получить нужные мне данные. Может кто-нибудь, пожалуйста, дайте мне знать, где я делаю это неправильно. может быть, этот URL может быть полезен, чтобы указать, что я пытаюсь сделать https://developer.surveymonkey.com/mashery/requests_responses это o/p. Я получаю {"status": 3, "errmsg": "Ни один объект JSON не может быть декодирован: строка 1, столбец 0 (символ 0)"}

    package surveydetails;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;

public class Surveydetails {

        public static void main(String args []) {       
        String url = "https://api.surveymonkey.net/v2/surveys/get_survey_list?api_key=myapikey";                    
                    System.out.println("request being sent");
                    System.out.println(url);
                    JSONObject obj = new JSONObject();



                    try {
                        //byte[] postDataBytes = obj.toJSONString().getBytes("UTF-8");
                        URL ourl = new URL(url.toString());
                        HttpURLConnection conn = (HttpURLConnection) ourl.openConnection();
                        conn.setRequestMethod("POST");


conn.setRequestProperty("Authorization", "bearer myauthtoken"); 
conn.setRequestProperty("Content-Type", "application/json");

conn.getRequestProperty(obj.toString().getBytes("UTF-8").toString());


                        int k = conn.getResponseCode();
                        System.out.println("The response code received is "+k);
                        if (conn.getResponseCode() != 200) {
                            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");


                            output = br.readLine();
                            System.out.println(output);


                    } catch (MalformedURLException e) {

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

                }
}

person RJ24    schedule 07.03.2014    source источник
comment
Попробуйте избавиться от одинарных кавычек в своем теле.   -  person Miles Cederman-Haysom    schedule 08.03.2014
comment
Ага, я пытался это сделать. Тем не менее ответ тот же: {статус: 3, errmsg: объект JSON не может быть декодирован: строка 1, столбец 0 (символ 0)}   -  person RJ24    schedule 08.03.2014


Ответы (1)


Недопустимая кодировка JSON тела сообщения POST.

Ваш код String body=" '{\"fields\":[\"title\"]}'";

должно быть String body="{\"fields\":[\"title\"]}";

Я бы предложил использовать библиотеку JSON, например json-simple, при кодировании объектов JSON, чтобы избежать недопустимых JSON. Библиотека также будет более гибкой по мере разработки вашего приложения.

person Tony Mayse    schedule 07.03.2014
comment
Ниже приведен рабочий код. Спасибо, что предложили изменения. Единственным дополнительным изменением является установка моего тела снова. String input ="{}"; OutputStream os = conn.getOutputStream(); os.write(input.getBytes()); os.flush(); - person RJ24; 09.03.2014