之前无意中被人说起百度可以根据关键字生成文章,感觉好厉害。于是就上手看看什么神奇。

文章链接:https://ai.baidu.com/docs#/IntelligentWriting-API/2843fe5c

如果没有你想要的模块,可以选择自定义模块

  • API接口地址仅支持Get请求;
  • 接口返回结果要求UTF-8编码,为json串格式;

参考:https://ai.baidu.com/docs#/IntelligentWriting_intro/a79d81a7

没有数据源,于是,我就选择了天气这个模板。

根据创建应用,

找到API Key,Secret Key

贴上我写的类

import java.util.HashMap;
import java.util.Map;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import com.alibaba.fastjson.JSONObject;
import com.example.demo.image.utils.AuthService;
import com.example.demo.image.utils.HttpClientUtil;@RestController
public class BaiduWenZhangController {HttpClientUtil httpClientUtil=new HttpClientUtil();/*** 百度接口https://aip.baidubce.com/rest/2.0/nlp/v1/gen_article* @throws Exception */@RequestMapping("/baiduTest")public String test() throws Exception {String  accesss_tokenStr=AuthService.getAuth();String url="https://aip.baidubce.com/rest/2.0/nlp/v1/gen_article?access_token="+accesss_tokenStr;String contentType="application/x-www-form-urlencoded";/*** Body请求参数:参数           是否必选    类型      描述project_id        是       int     项目ID,可在我的项目页面下“生成记录”内获取数据源参数          否      ...     其他参数,即作为系统调用预置或用户提供的数据源的参数。UTF-8编码,没有参数可不传。例如预置天气数据源,请求接口生成文章时传入的参数为:project_id=111&city=北京,就会返回北京的天气数据。*/Map<String, Object> map =new HashMap<String, Object>();map.put("project_id", 8627);map.put("city", "北京");//   map.put("ganmao_desc", "我不会感冒");//  map.put("chuanyi_desc", "好想看娟娟穿裙子");//  map.put("yundong_desc", "可以骑车去,或者跑跑步");String str=httpClientUtil.toBaidu(url,map,contentType);JSONObject jsonObject=JSONObject.parseObject(str);String wenzhang =jsonObject.getString("result");return wenzhang;}}
 public  String toBaidu(String url, Map<String, Object> map,String contentType) throws Exception {CloseableHttpClient httpClient = HttpClientBuilder.create().build();String result=null;// 声明httpPost请求HttpPost httpPost = new HttpPost(url);// 判断map不为空if (map != null) {// 声明存放参数的List集合List<NameValuePair> params = new ArrayList<NameValuePair>();// 遍历map,设置参数到list中for (Map.Entry<String, Object> entry : map.entrySet()) {params.add(new BasicNameValuePair(entry.getKey(), entry.getValue().toString()));}// 创建form表单对象UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(params, "utf-8");formEntity.setContentType(contentType);// 把表单对象设置到httpPost中httpPost.setEntity(formEntity);}// 使用HttpClient发起请求,返回responseCloseableHttpResponse response = httpClient.execute(httpPost);// 解析response封装返回对象httpResult// HttpTinyClient.HttpResult httpResult = null;if (response.getEntity() != null) {// httpResult = new HttpResult(response.getStatusLine().getStatusCode(),result= EntityUtils.toString(response.getEntity(), "UTF-8");} else {//  httpResult = new HttpResult(response.getStatusLine().getStatusCode(), "");}// 返回结果return result;}
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.List;
import java.util.Map;
import com.alibaba.fastjson.JSONObject;/*** 获取token类*/
public class AuthService {/*** 获取权限token* @return 返回示例:* {* "access_token": "24.460da4889caad24cccdb1fea17221975.2592000.1491995545.282335-1234567",* "expires_in": 2592000* }*/public static String getAuth() {// 官网获取的 API Key 更新为你注册的String clientId = "9W4i4HewHrIYyjzTmW3i9ZE*";// 官网获取的 Secret Key 更新为你注册的String clientSecret = "UsGi9EZKCBN4h0TcGM2iY460Wum3PQd*";return getAuth(clientId, clientSecret);}/*** 获取API访问token* 该token有一定的有效期,需要自行管理,当失效时需重新获取.* @param ak - 百度云官网获取的 API Key* @param sk - 百度云官网获取的 Securet Key* @return assess_token 示例:* "24.460da4889caad24cccdb1fea17221975.2592000.1491995545.282335-1234567"*/public static String getAuth(String ak, String sk) {// 获取token地址String authHost = "https://aip.baidubce.com/oauth/2.0/token?";String getAccessTokenUrl = authHost// 1. grant_type为固定参数+ "grant_type=client_credentials"// 2. 官网获取的 API Key+ "&client_id=" + ak// 3. 官网获取的 Secret Key+ "&client_secret=" + sk;try {URL realUrl = new URL(getAccessTokenUrl);// 打开和URL之间的连接HttpURLConnection connection = (HttpURLConnection) realUrl.openConnection();connection.setRequestMethod("GET");connection.connect();// 获取所有响应头字段Map<String, List<String>> map = connection.getHeaderFields();// 遍历所有的响应头字段for (String key : map.keySet()) {System.out.println(key + "--->" + map.get(key));}// 定义 BufferedReader输入流来读取URL的响应BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));String result = "";String line;while ((line = in.readLine()) != null) {result += line;}/*** 返回结果示例*/System.out.println("result:" + result);/**JSONObject jsonObject = new JSONObject(result);String access_token = jsonObject.getString("access_token");return access_token;*///我这里使用的是阿里的fastjsonJSONObject jsonObject=JSONObject.parseObject(result);String access_token =jsonObject.getString("access_token");return access_token;} catch (Exception e) {System.err.printf("获取token失败!");e.printStackTrace(System.err);}return null;}}

然后调用: http://127.0.0.1:8080/baiduTest

返回说明

返回参数

参数 类型 描述
result array 成功时,返回的结果数组
+title string 文章标题
+summary string 文章摘要
+texts array 文章正文数组,每个数组元素代表一个段落,顺序为文章模板的段落顺序
error_code int 错误码,0代表成功,其他代表失败
error_msg string 错误信息,成功时为空,失败返回错误原因

返回示例

成功返回示例

{  "error_code": 0,"error_msg": "","result": {"texts": ["<p>今天的温度范围是-4 ~ 6℃。<\/p>", "<p>天气较好,但考虑天气寒冷,风力较强,推荐您进行室内运动,若户外运动请注意保暖并做好准备活动。<\/p>", "<p>各项气象条件适宜,无明显降温过程,发生感冒机率较低<\/p>"],"summary": "北京周四天气预报","title": "<p>北京天气<\/p>"}
}

失败返回示例

{"error_code": 110,"error_msg": "Access token invalid or no longer valid","result": []
}

我返回来的是:

{"error_code":0,"error_msg":"","result":{"texts":["<p>\u4eca\u5929\u5317\u4eac\u7684\u5929\u6c14\u6674\u70ed\u9ad8\u6e29\uff0c\u6700\u9ad8\u6c14\u6e2936\u2103\uff0c\u6700\u4f4e\u6c14\u6e2926\u2103\u3002\u5929\u6c14\u708e\u70ed\uff0c\u5efa\u8bae\u7740\u77ed\u886b\u3001\u77ed\u88d9\u3001\u77ed\u88e4\u3001\u8584\u578bT\u6064\u886b\u7b49\u6e05\u51c9\u590f\u5b63\u670d\u88c5\u3002\u672a\u6765\u51e0\u5929\uff0c\u6c14\u6e29\u4fdd\u6301\u5e73\u7a33\u3002<\/p>","<p>\u4eca\u5929\u7684\u751f\u6d3b\u6307\u5357\uff1a\u4eca\u5929\u5929\u6c14\u8f83\u597d\uff0c\u65e0\u96e8\u6c34\u56f0\u6270\uff0c\u4f46\u8003\u8651\u6c14\u6e29\u5f88\u9ad8\uff0c\u8bf7\u6ce8\u610f\u9002\u5f53\u51cf\u5c11\u8fd0\u52a8\u65f6\u95f4\u5e76\u964d\u4f4e\u8fd0\u52a8\u5f3a\u5ea6\uff0c\u8fd0\u52a8\u540e\u53ca\u65f6\u8865\u5145\u6c34\u5206\uff1b\u5065\u5eb7\u9632\u75c5\u65b9\u9762\uff0c\u5404\u9879\u6c14\u8c61\u6761\u4ef6\u9002\u5b9c\uff0c\u53d1\u751f\u611f\u5192\u673a\u7387\u8f83\u4f4e\u3002\u4f46\u8bf7\u907f\u514d\u957f\u671f\u5904\u4e8e\u7a7a\u8c03\u623f\u95f4\u4e2d\uff0c\u4ee5\u9632\u611f\u5192\uff1b\u5982\u679c\u60a8\u6709\u7231\u8f66\uff0c\u4eca\u5929\u6700\u8fd1\u4e09\u5929\u4f1a\u6709\u964d\u96e8\u3001\u5927\u98ce\u7b49\u6076\u52a3\u5929\u6c14\uff0c\u53ef\u80fd\u4f1a\u5bfc\u81f4\u60a8\u7684\u7231\u8f66\u518d\u6b21\u88ab\u5f04\u810f\uff0c\u5efa\u8bae\u4e0d\u8981\u9009\u62e9\u5728\u4eca\u5929\u6d17\u8f66\u200b\u3002<\/p>"],"summary":"<p>7\u670826\u65e5\uff0c\u5317\u4eac\u6674\u70ed\u9ad8\u6e29\u3002<\/p>","title":"<p>\u5317\u4eac\u5929\u6c14<\/p>"}}

返回到前端:

在做修改

2019.10.23再次追加

可以用jsoup来解析。jsoup等用空了,我在做一篇文章讲解

控制应用: https://console.bce.baidu.com/ai/#/ai/intelligentwriting/overview/index

百度写作文档: https://ai.baidu.com/docs#/IntelligentWriting-API/2843fe5c

百度接口根据关键字生成文章相关推荐

  1. Spring Data JPA-根据Repository接口关键字生成SQL

    Spring Data JPA-根据Repository接口关键字生成SQL JPA支持根据Repository接口中的方法名生成SQL,常用的CRUD都可以实现. 支持的查询方法主题关键字(即前缀, ...

  2. BeautifulSoup爬取国家政策网目标话题的10篇文章,以及基于jieba的关键字生成

    BeautifulSoup爬取国家政策网目标话题的10篇文章,以及基于jieba的关键字生成 引用链接1 引用链接2 一:基本步骤 1.首先,写出需要访问的url,涉及到将中文转化为utf8编码,再转 ...

  3. 基于百度接口的手机无广告浏览器设计

    摘要 搜索工具在人们网络生活中扮演着重要的角色,在当今发达的信息时代,人们依靠各种各样的搜索工具来在网络上寻找所需要的资料,没有搜索工具,这些正确.有效的资源就没办法呈现在人们的眼前,因此,在搜索引擎 ...

  4. 百度接口(1)小票识别+票体主题内容处理

    一.申请百度接口 注册百度账号 https://login.bce.baidu.com/ 百度票据识别 领取免费试用 选择通用文字识别,可以看到通过身份证号实名认证后可1000次/月试用,对开发者初调 ...

  5. 自动生成文章的html,文章自动更新工具|自动生成文件|自动伪原创|文章自动插入关键词工具...

    概念网络发布一款自动更新文章的工具, 该套工具可用概念的文章站程序, 概念的发布站程序, 概念的企业站程序, 只要在服务器一直开着这个工具, 工具会更具配置文件的配置, 每天定时的更新网站的文章, 文 ...

  6. java接口文档生成工具_接口文档生成

    一.为什么要写接口文档? 1.正规的团队合作或者是项目对接,接口文档是非常重要的,一般接口文档都是通过开发人员写的.一个工整的文档显得是非重要. 2.项目开发过程中前后端工程师有一个统一的文件进行沟通 ...

  7. Swagger自动接口文档生成框架————springboot整合swagger总结

    swagger简介: swagger是一款开源的api接口文档生成工具. Swagger的项目主页:https://swagger.io/    目前比较流行的做法是在代码中加入swagger相关的注 ...

  8. java接口文档生成工具_【分享】接口文档生成工具apipost

    一.为什么要写接口文档? 正规的团队合作或者是项目对接,接口文档是非常重要的,一般接口文档都是通过开发人员写的.一个工整的文档显得是非重要. 项目开发过程中前后端工程师有一个统一的文件进行沟通交流开发 ...

  9. 一款零注解API接口文档生成工具

    smart-doc是一款同时支持JAVA REST API和Apache Dubbo RPC接口文档生成的工具,基于接口源码来分析生成接口文档,不采用任何注解侵入到业务代码中.只需要按照java-do ...

最新文章

  1. ionic4中使用Swiper触屏滑动---心酸路
  2. LeetCode刷题记录1——717. 1-bit and 2-bit Characters(easy)
  3. 网络营销——网络营销专员如何应对网站关键词排名波动情况?
  4. 页面事件(Init,Load,PreRender)执行顺序
  5. 查看Tomcat版本及多版本切换
  6. 对malloc和free的思考
  7. 树莓派python gpio 模仿iic_树莓派高级GPIO库,wiringpi2 for python使用笔记(五)i2c读取测试...
  8. paip.提升安全性------登录地区变换后进行验证
  9. java基础代码-实现键盘输入
  10. 同一个项目中让R和Python无缝工作的五种方法
  11. LINUX无法定位软件包
  12. matlab中离散化傅里叶变换,Matlab模拟傅里叶变换
  13. Seo:入门须知(三)网页快照投诉
  14. 计算机电源插座安装,弱电箱里的插座 介绍及安装方法
  15. 电脑计算机睡眠时间设置为永不熄灭后,电脑仍会熄屏,重新唤醒时出现在登录界面怎么办?
  16. 大数据分析案例-对电信客户流失分析预警预测
  17. poi向excel插入图片demo
  18. 硬件知识:独立显卡和集成显卡的区别
  19. 拿来就用的脚本案例(三)
  20. 网页设计与开发-实验报告-4

热门文章

  1. 练习-Java循环综合练习一之住房贷款还款计算
  2. python中frame用法_python:pandas中dataframe的基本用法汇总
  3. kubernetes的ingress:Ingress controller,traefik
  4. CAN光纤转换器,光纤转can模块使用说明
  5. PAT 甲级 1040 Longest Symmetric String
  6. 多元回归分析(线性回归)
  7. 获取当前时间戳-(Objective-C)
  8. 科林明伦杯哈尔滨理工大学第九届程序设计竞赛
  9. linux风扇转速,ubuntu系统调节GPU风扇转速
  10. python元类_Python基础:元类