从java中的Lambda函数调用外部Rest API

时间:2018-02-18 07:58:31

标签: java rest aws-lambda amazon-lex

我正在尝试编写一个从lex输入中获取信息的lambda函数,并调用rest api,将该信息作为参数传递,返回一个字符串,然后我将其作为响应发送给lex。它在eclipse中运行时按预期工作,但是当我将jar上传到amazon lambda时,它没有给出任何错误,但输出字符串为null。

public class LambdaFunctionHandler implements RequestHandler<Map<String,Object>, Object> {


@Override
public Object handleRequest(Map<String,Object> input, Context context) {

    ValidationHook.LexRequest lexRequest= LexRequestFactory.createLexRequest(input);
    String orgbotcommand = lexRequest.getCommand()+"%20"+lexRequest.getType()+"%20"+lexRequest.getNew_variable();
    lexRequest.setOrgbotcommand(orgbotcommand);

    try {
        URL url = new URL("http://localhost:8080/mindtuit/execute?command="+orgbotcommand);
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setRequestMethod("GET");
        conn.setRequestProperty("Accept", "application/json");

        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);
            lexRequest.setResponse(output);

        }
        System.out.println(lexRequest.getResponse());

        conn.disconnect();

      } catch (MalformedURLException e) {

        e.printStackTrace();

      } catch (IOException e) {

        e.printStackTrace();

      }



    String content = String.format("command recieved by %s is %s,response is %s ",lexRequest.getBotName(),lexRequest.getOrgbotcommand(),lexRequest.getResponse());

    Message message = new Message("PlainText",content);
    DialogAction dialogAction = new DialogAction("Close", "Fulfilled", message );
    System.out.println(dialogAction);

    return new LexRespond(dialogAction);
}

}

0 个答案:

没有答案