wit.ai - Как отправить запрос в Java?

Я работаю над виртуальным помощником, используя wit.ai в Java, но я застрял, выполняя HTTP-запрос. Я не профессионал в HTTP-запросах на Java, и все время получаю ошибку 400.

Это мой код:

public class CommandHandler {
public static String getCommand(String command) throws Exception {

    String url = "https://api.wit.ai/message";
    String key = "TOKEN HERE";

    String param1 = "20141022";
    String param2 = command;
    String charset = "UTF-8";

    String query = String.format("v=%s&q=%s",
            URLEncoder.encode(param1, charset),
            URLEncoder.encode(param2, charset));


    URLConnection connection = new URL(url + "?" + query).openConnection();
    connection.setRequestProperty ("Authorization Bearer", key);
    connection.setRequestProperty("Accept-Charset", charset);
    InputStream response = connection.getInputStream();
    return response.toString();
}

}

Вот пример, который дает wit.ai:

$ curl \
  -H 'Authorization: Bearer $TOKEN' \
  'https://api.wit.ai/message?v=20141022&q=hello'

Я надеюсь, что кто-то может мне помочь


person Julian    schedule 12.02.2016    source источник
comment
Я не могу сказать, что это причина, но в curl у вас есть Authoritation: Bearer [value], а в java Authorization Bearer: [value] (при условии, что и TOKEN, и key установлены правильно). Тем не менее, вы можете напечатать url + "?" + query, чтобы увидеть, есть ли еще какие-либо различия (хотя я бы сказал, что их нет).   -  person SJuan76    schedule 12.02.2016
comment
Спасибо, кажется, я забыл пробел после Bearer, так что connection.setRequestProperty ("Authorization", "Bearer " + key);   -  person Julian    schedule 12.02.2016
comment
Привет @Julian, Если вам известен какой-либо проект с открытым исходным кодом, основанный на JAVA и использующий API wit.ai, не могли бы вы поделиться? Спасибо, я проверял проект wit.ai, у них есть node sdk, но не java sdk напрямую. Спасибо.   -  person a3.14_Infinity    schedule 15.11.2016


Ответы (2)


Ниже приведен простой код для быстрой проверки API отдыха.

try {
        URL url = new URL("https://api.wit.ai/message?v=20170218&q=Hello");
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setRequestMethod("GET");
        conn.setRequestProperty("Accept", "application/json");
        conn.setRequestProperty("Authorization", "Bearer addkeyhere");

        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");
        while ((output = br.readLine()) != null) {
            System.out.println(output);
        }

        conn.disconnect();

      } catch (MalformedURLException e) {

        e.printStackTrace();

      } catch (IOException e) {

        e.printStackTrace();

      }
person Rahul Sawant    schedule 18.02.2017

Это сработало для меня очень хорошо!

connection.setRequestProperty ("Authorization": "Bearer "+key);
person ImGroot    schedule 03.09.2016
comment
пожалуйста, оберните свой код обратными кавычками, чтобы он был отформатирован как код - person YakovL; 03.09.2016