Не удается подключиться к API-интерфейсу обезьяны опроса

Я пытаюсь подключиться к API Survey Monkey с помощью этого кода, который не работает. Пишет "Неверный ключ API", хотя я получил API из консоли API.

 public void fetch() {
        String url = "https://api.surveymonkey.net/v2/surveys/get_survey_list?api_key=" + apiKey;
        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.setDoOutput(true);
            conn.setRequestMethod("POST");

            conn.setRequestProperty("Authorization", "bearer " + accessToken);
            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();
        }
    }

Вот ошибка:

request being sent
https://api.surveymonkey.net/v2/surveys/get_survey_list?api_key=---API-KEY----
The response code received is 200
Output from Server .... 
{"status":3,"errmsg":"Expected object or value"}

Я только что получил этот URL-адрес из консоли API.


person EternallyCurious    schedule 28.10.2014    source источник


Ответы (2)


Эта конкретная ошибка возникает, когда для данных POST отправляется пустая строка. API ожидает как минимум пустой объект ("{}"). Если проблема, указанная Майлзом выше, была просто опечаткой (с использованием «getRequestProperty» вместо «setRequestProperty»), проверьте, возвращает ли toString для пустого JSONObject «» или «{}».

person Ryan Dugan    schedule 03.11.2014

Убедитесь, что вы используете ключ API, связанный с вашей учетной записью разработчика, зарегистрированной на странице http://developer.surveymonkey.com, < em>не образец ключа API, который консоль использует, чтобы вы могли пробовать запросы. Образец ключа API не предназначен для использования с приложениями, только в консоли API.

person Miles Cederman-Haysom    schedule 28.10.2014
comment
Спасибо за это! Но я все еще получаю сообщение об ошибке. Вопрос обновлен выше. - person EternallyCurious; 29.10.2014
comment
Не похоже, что вы отправляете объект JSON в виде строки. - person Miles Cederman-Haysom; 30.10.2014
comment
Я думаю, что в этой части я отправляю объект в виде строки: conn.setRequestProperty(Authorization, Bearer + AccessToken); conn.setRequestProperty(Content-Type, application/json); conn.getRequestProperty(obj.toString().getBytes(UTF-8).toString()); Что еще вы ожидаете? Можете ли вы ответить конкретно? - person EternallyCurious; 30.10.2014
comment
не получает ли getRequestProperty, а не устанавливает? - person Miles Cederman-Haysom; 31.10.2014