一言API的简介
动漫也好、小说也好、网络也好,不论在哪里,我们总会看到有那么一两个句子能穿透你的心。我们把这些句子汇聚起来,形成一言网络,以传递更多的感动。如果可以,我们希望我们没有停止服务的那一天。
简单来说,一言指的就是一句话,可以是动漫中的台词,也可以是网络上的各种小段子。 或是感动,或是开心,有或是单纯的回忆。来到这里,留下你所喜欢的那一句句话,与大家分享,这就是一言存在的目的。
一言API的请求地址及相关参数
请求地址:
地址 | 协议 | 方法 | QPS 限制 | 线路 |
| HTTPS | Any | 3.5 | 全球 |
| HTTPS | Any | 10 | 国外 |
请求参数:
参数 | 值 | 可选 | 说明 |
c | 见后表 | 是 | 句子类型 |
encode | 见后表 | 是 | 返回编码 |
charset | 见后表 | 是 | 字符集 |
callback | 如: | 是 | 调用的异步函数 |
select | 默认: | 是 | 选择器。配合 |
min_length | 默认: | 是 | 返回句子的最小长度(包含) |
max_length | 默认: | 是 | 返回句子的最大长度(包含) |
句子类型(参数):
参数 | 说明 |
a | 动画 |
b | 漫画 |
c | 游戏 |
d | 文学 |
e | 原创 |
f | 来自网络 |
g | 其他 |
h | 影视 |
i | 诗词 |
j | 网易云 |
k | 哲学 |
l | 抖机灵 |
其他 | 作为 动画 类型处理 |
备注:可选择多个分类,例如: ?c=a&c=c
返回编码(参数):
参数 | 说明 |
text | 返回纯洁文本 |
json | 返回格式化后的 JSON 文本 |
js | 返回指定选择器的同步调用函数。默认选择器为: |
其他 | 返回格式化后的 JSON 文本 |
字符集(参数):
参数 | 说明 |
utf-8 | 返回 utf-8 编码的内容 |
gbk | 返回 gbk 编码的内容。不支持与异步函数同用 |
其他 | 返回 utf-8 编码的内容 |
接口测试
在这里我用到了Postman,返回句子类型是诗词
请求成功,返回JSON:
{
"id": 5923,
"uuid": "86847a8b-800a-4500-8720-e7620a4e63c9",
"hitokoto": "晚日寒鸦一片愁。柳塘新绿却温柔。",
"type": "i",
"from": "鹧鸪天·晚日寒鸦一片愁",
"from_who": "辛弃疾",
"creator": "a632079",
"creator_uid": 1044,
"reviewer": 1044,
"commit_from": "api",
"created_at": "1586398485",
"length": 16
}
核心代码展示
/**
* @author 像向日葵一样~
* 调用一言API,其中参数c等于i代表诗词,GET请求到JSON后取出诗词然后设置文本
* 操作步骤:
* 1.根据接口得到url
* 2.创建connection对象
* 3.设置请求方式
* 4.连接
* 5.得到响应码,得到响应流
* 6.响应流转换为字符串
* 7.根据字符串得到JSON对象
* 8.从JSON对象中取得hitokoto键的值,即返回的诗词
* 9.设置在文本框中
*/
private void sendRequestWithHttpClient() {
new Thread(new Runnable() {
@Override
public void run() {
try {
String url1 = "https://v1.hitokoto.cn?c=i";
URL url = new URL(url1);
//得到connection对象。
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
//设置请求方式
connection.setRequestMethod("GET");
//连接
connection.connect();
//得到响应码
int responseCode = connection.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
//得到响应流
InputStream inputStream = connection.getInputStream();
//将响应流转换成字符串
String result = is2String(inputStream);//将流转换为字符串。
JSONObject jsonObject = new JSONObject(result);
String value = jsonObject.optString("hitokoto");
wordText.setText(value);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}