java 对接图灵机器人2.0

首先要到官网注册个图灵账号,获取

//存储APIkey
public static final String API_KEY = ";
//存储接口请求地址
public static final String API_URL = "http://openapi.tuling123.com/openapi/api/v2";
// 用户id
public static final String USER_ID = "";

这三个信息,其中用户id是你注册账号的用户名。

 

package com.mydream.tulinrobot.controller;

import com.mydream.tulinrobot.method.TuLinMethod;
import net.sf.json.JSONObject;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.util.List;
import java.util.Scanner;

/**
 * Package: com.mydream.tulinrobot.controller
 * Description: TODO
 * Author: 李鹏伟
 * Date: Created in 2018/8/2016:58
 * Company: 公司
 * Copyright: Copyright (C) 2018
 * Version: 0.0.1
 * Modified By: 修改者
 */

public class TestTulinRoteController {

        //存储APIkey
        public static final String API_KEY = "3660f1b9c5b148f588a2a31838db9bc2";
        //存储接口请求地址
        public static final String API_URL = "http://openapi.tuling123.com/openapi/api/v2";
        // 用户id
        public static final String USER_ID = "311630";



        /**
         * 获取可以传输的正确的json格式的请求字符串
         * @param reqMes 输入内容
         * @return
         */
        public String getReqMes(String reqMes){
            // 请求json,里面包含reqType,perception,userInfo
            JSONObject reqJson = new JSONObject();
            // 输入类型:0-文本(默认)、1-图片、2-音频
            int reqType = 0;
            reqJson.put("reqType",reqType);

            // 输入信息,里面包含inputText,inputImage,selfInfo
            JSONObject perception = new JSONObject();
            // 输入的文本信息
            JSONObject inputText = new JSONObject();
            inputText.put("text",reqMes);
            perception.put("inputText",inputText);
//        // 输入的图片信息
//        JSONObject inputImage = new JSONObject();
//        inputImage.put("url","");
//        perception.put("inputImage",inputImage);
//        // 个人信息,里面包含location
//        JSONObject selfInfo = new JSONObject();
//        // 包含city,province,street
//        JSONObject location = new JSONObject();
//        location.put("city","");
//        location.put("province","");
//        location.put("street","");
//        selfInfo.put("location",location);
//        perception.put("selfInfo",selfInfo);
            // 用户信息
            JSONObject userInfo = new JSONObject();
            userInfo.put("apiKey","3660f1b9c5b148f588a2a31838db9bc2");
            userInfo.put("userId","311630");

            reqJson.put("perception",perception);
            reqJson.put("userInfo",userInfo);
            return reqJson.toString();
        }

        public String tulinPost(String url, String reqMes) {

            String status = "";
            String responseStr = "";
            PrintWriter out = null;
            BufferedReader in = null;
            try {
                URL realUrl = new URL(url);
                // 打开和URL之间的连接
                URLConnection conn = realUrl.openConnection();
                HttpURLConnection httpUrlConnection = (HttpURLConnection) conn;
                // 设置请求属性
                httpUrlConnection.setRequestProperty("Content-Type", "application/json");
                httpUrlConnection.setRequestProperty("x-adviewrtb-version", "2.1");
                // 发送POST请求必须设置如下两行
                httpUrlConnection.setDoOutput(true);
                httpUrlConnection.setDoInput(true);
                // 获取URLConnection对象对应的输出流
                out = new PrintWriter(httpUrlConnection.getOutputStream());
                // 发送请求参数
                out.write(reqMes);
                // flush输出流的缓冲
                out.flush();
                httpUrlConnection.connect();
                // 定义BufferedReader输入流来读取URL的响应
                in = new BufferedReader(new InputStreamReader(httpUrlConnection.getInputStream()));
                String line;
                while ((line = in.readLine()) != null) {
                    responseStr += line;
                }
                status = new Integer(httpUrlConnection.getResponseCode()).toString();
//            System.out.println("status=============="+status);
//            System.out.println("response=============="+responseStr);
            } catch (Exception e) {
                System.out.println("发送 POST 请求出现异常!" + e);
            }
            // 使用finally块来关闭输出流、输入流
            finally {
                try {
                    if (out != null) { out.close();}
                    if (in != null) {in.close();}
                } catch (Exception ex) {
                    ex.printStackTrace();
                }
            }
            return responseStr;
        }

        public String getResultMes(String tulinPostStr){

            JSONObject thesultStr = JSONObject.fromObject(tulinPostStr);

            List<Object> results = (List<Object>) thesultStr.get("results");

            JSONObject resultObj = JSONObject.fromObject(results.get(0));

            JSONObject values = JSONObject.fromObject(resultObj.get("values"));

            return values.get("text").toString();
        }

        public static void main(String[] args) {
//        //声明并实例化我们刚刚封装好的工具类
            com.mydream.tulinrobot.method.TuLinMethod util = new com.mydream.tulinrobot.method.TuLinMethod();
            System.out.println("请输入内容:");
            //接收用户输入
            Scanner scanner = new Scanner(System.in);
            while (scanner.hasNext()){

                String reqStr =  new com.mydream.tulinrobot.method.TuLinMethod().getReqMes(scanner.nextLine());
                String respStr = new com.mydream.tulinrobot.method.TuLinMethod().tulinPost(API_URL,reqStr);

                String talk = new com.mydream.tulinrobot.method.TuLinMethod().getResultMes(respStr);
                //直接输出机器人的回复
//            System.err.println("Ta 对你说 -> " + new TuLinMethod().tulinPost(API_URL,new TuLinMethod().getReqMes(scanner.nextLine())));
                System.err.println("Ta 对你说 -> " + talk);
            }

        }
}

运行main方法就可以测试。

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
可以使用以下代码实现Java链接图灵机器人: ```java import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.net.URLEncoder; public class TuringRobot { public static void main(String[] args) { String content = "你好"; String result = sendGet(content); System.out.println(result); } public static String sendGet(String content) { String APIKEY = "你的图灵机器人APIKEY"; String question = ""; try { question = URLEncoder.encode(content, "utf-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } String url = "http://www.tuling123.com/openapi/api?key=" + APIKEY + "&info=" + question; String result = ""; try { URL realURL = new URL(url); HttpURLConnection connection = (HttpURLConnection) realURL.openConnection(); connection.setRequestMethod("GET"); connection.setRequestProperty("accept", "*/*"); connection.setRequestProperty("connection", "Keep-Alive"); connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); connection.connect(); BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream(), "utf-8")); String line; while ((line = in.readLine()) != null) { result += line; } in.close(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return result; } } ``` 其中,APIKEY需要替换成自己的图灵机器人APIKEY,然后调用sendGet方法即可获取图灵机器人返回的结果。
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值