首页 > 编程语言 >Java在线聊天功能

Java在线聊天功能

时间:2022-10-05 21:23:55浏览次数:47  
标签:result http String content Java api 聊天 import 在线

封装工具类

封装工具类

package utils;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;

import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

/**
 * 图灵机器人api工具类
 * @author admin
 *
 */
public class TuLingApiUtil {
    
    //自己的apikey,注意不是密钥  图灵接口的
    private static final String key = "自己的KEY";
    
    public static String getResult( String content ) {
      
      //青云客网络api接口 这个不需要定义Key
     //String apiUrl = "http://api.qingyunke.com/api.php?key=free&appid=0&msg=";
     //图灵api接口 String apiUrl = "http://www.tuling123.com/openapi/api?key="+key+"&info="; try { //内容需要utf-8编码(官方文档中有说明) content = URLEncoder.encode(content, "utf-8"); //拼接url apiUrl = apiUrl + content; } catch (UnsupportedEncodingException e) { e.printStackTrace(); } //封装请求头 HttpGet request = new HttpGet(apiUrl); String result = ""; try { //发送http请求 HttpResponse response = HttpClients.createDefault().execute(request); //获取响应码 int code = response.getStatusLine().getStatusCode(); if (code == 200) { //获取返回的结果 result = EntityUtils.toString(response.getEntity()); } else { System.out.println("code=" + code); } } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } //返回结果 return result; } }

 

控制器写法

private R message(String message){

        String msg = URLEncoder.encode(message, "GBK");
        String gbk = URLDecoder.decode(msg, "GBK");

        while (true){

            //接收返回的结果
            String result = TuLingUtil.getResult(gbk);

            return R.ok(result);
        }
    }

 

本地控制台测试一下

public class TestApi {

    public void test() {
        
        Scanner sc = new Scanner(System.in);
        
        while(true) {
            String content = "";
            //控制台输入信息
            content = sc.nextLine();
            
            //接收返回的结果
            String result = TuLingApiUtil.getResult(content);
            
            //把json格式的字符串转化为json对象
            JsonObject json = new JsonParser().parse(result).getAsJsonObject();
            //获得text键的内容,并转化为string
            String back = json.get("text").toString();
            
            //打印结果
            System.out.println(back);
        }
    }
}

 

标签:result,http,String,content,Java,api,聊天,import,在线
From: https://www.cnblogs.com/dsds/p/16756426.html

相关文章

  • 面试+学习+做项目+最全Java视频讲解
    关注公众号:计算机视觉与图形学实战​​Java零基础教程视频(适合Java0基础,Java初学入门)​​​​尚硅谷Java零基础入门教程(含百道Java真题,2万多行Java代码实战)​​​​黑马程......
  • 超详细Java基础-多态
    茫茫人海千千万万,感谢这一秒你看到这里。希望我的能对你的有所帮助!共勉!愿你在未来的日子,保持热爱,奔赴山海!Java基础知识(多态)多态多态就是指程序中定义的引用变量所......
  • java开发环境的安装之IDEA
    一、JDK、JRE、JVM本文编写思路来自于博主狂神说1、定义jdk:JavaDevelopmentKit(Java语言的软件开发工具包)JDK的说明jre:JavaRuntimeEnvironment(java运行环境)JRE......
  • java注解与反射--3
    java注解与反射--3类的加载与ClassLoaderjava内存堆存放new的对象和数组可以被所有的线程共享,不会存放别的对象引用栈存放基本变量类型引用对象的变量方法......
  • Java冒泡排序
    publicclassArrayDome7{/*冒泡拍寻是最为出名的排序算法之一,总共又八大paixu冒泡排序的代码是:两层循环,外层冒泡轮数,里层依次比较时间......
  • 常用的前端JavaScript方法封装
    [常用的前端JavaScript方法封装]1、输入一个值,返回其数据类型functiontype(para){returnObject.prototype.toString.call(para)}复制代码2、数组去重functio......
  • 力扣138(java)- 复制带随机指针的链表(中等)
    题目:给你一个长度为n的链表,每个节点包含一个额外增加的随机指针random,该指针可以指向链表中的任何节点或空节点。构造这个链表的 深拷贝。 深拷贝应该正好由n个......
  • Java手写一个批量获取数据工具类
    1.背景偶尔会在公司的项目里看到这样的代码List<Info>infoList=newArrayList<Info>();if(infoidList.size()>100){intsize=infoidList.size();i......
  • Java学习 三大循环语句和switch语句
    Java学习三大循环语句和switch语句 while循环语句(当)只要布尔表达式为true,循环就回一直执行下去。**我们大多是情况会让循环停止下来的,我们需要一个让表达式时效......
  • Java第三讲动手动脑
    1以上代码无法通过编译主要是由于在Foo类中自定义了有参的构造函数,系统不在提供默认的构造函数(无参),而在上述的引用中并没有提供参数导致无法通过编译。 ......