关键词:
HttpURLConnection 学习笔记 - 百度内容审核-图像
用到 百度内容审核-图像
看了官方的工作包中使用HttpURLConnection
请求,封装好的工具类用习惯了,很少看里面,撞上了就学习一下吧。
代码
1. 官方的例子
官方例子中还提供了几个工具类,比如HttpUtil
封装好的。可以直接用。
package com.baidu.ai.aip;
import com.baidu.ai.aip.utils.Base64Util;
import com.baidu.ai.aip.utils.FileUtil;
import com.baidu.ai.aip.utils.HttpUtil;
import java.net.URLEncoder;
/**
* 图像审核接口
*/
public class ImgCensor
/**
* 重要提示代码中所需工具类
* FileUtil,Base64Util,HttpUtil,GsonUtils请从
* https://ai.baidu.com/file/658A35ABAB2D404FBF903F64D47C1F72
* https://ai.baidu.com/file/C8D81F3301E24D2892968F09AE1AD6E2
* https://ai.baidu.com/file/544D677F5D4E4F17B4122FBD60DB82B3
* https://ai.baidu.com/file/470B3ACCA3FE43788B5A963BF0B625F3
* 下载
*/
public static String ImgCensor()
// 请求url
String url = "https://aip.baidubce.com/rest/2.0/solution/v1/img_censor/v2/user_defined";
try
// 本地文件路径
String filePath = "[本地文件路径]";
byte[] imgData = FileUtil.readFileByBytes(filePath);
String imgStr = Base64Util.encode(imgData);
String imgParam = URLEncoder.encode(imgStr, "UTF-8");
String param = "image=" + imgParam;
// 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。
String accessToken = "[调用鉴权接口获取的token]";
String result = HttpUtil.post(url, accessToken, param);
System.out.println(result);
return result;
catch (Exception e)
e.printStackTrace();
return null;
public static void main(String[] args)
ImgCensor.ImgCensor();
2. 自己的学习代码
虽然官方提供了封装好的工具类,但是自己学习,还是敲一遍的好。
package com.jerry.utils;
import net.sf.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.*;
import java.net.*;
/**
* @author jerryjin
* @Classname HttpUtil
* @Date 2021-07-23 14:18
*/
public class HttpUtil
public static Logger log = LoggerFactory.getLogger(HttpUtil.class);
/**
* POST请求
* @param url 请求地址
* @param params 参数字符串: a=1&b=2&c=3
* @return
*/
public static String doPost(String url, String params)
HttpURLConnection connection = null;
OutputStream outputStream = null;
InputStream inputStream = null; // 请求返回的数据流
BufferedReader reader = null;
try
URL _url = new URL(url);
connection = (HttpURLConnection) _url.openConnection();
// 设置请求方式主POST,默认 GET
connection.setRequestMethod("POST");
// 设置连接超时时间为5秒
connection.setConnectTimeout(5000);
// 设置读取超时时间为5秒
connection.setReadTimeout(5000);
// POST请求需要开启输出流,以便将请求参数写入请求体body。开启后方能使用 getOutputStream();默认false
connection.setDoOutput(true);
// 从连接读入,可获得请求返回内容。开启后方能使用 getInputStream();默认true
// connection.setDoInput(true);
// 设置Header
connection.setRequestProperty("Content-type", "application/x-www-form-urlencoded");
// connection.setRequestProperty("user-agent", "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.7 Safari/537.36");
// 如果有传参
if(null != params)
// 获取请求的输出流
outputStream = connection.getOutputStream();
// 向请求地址写参数
outputStream.write(params.getBytes());
outputStream.flush();
// connection.connect(); // getResponseCode、getOutputStream、getInputStream 都会隐式调用它
// 判断请求Url是否成功
if (connection.getResponseCode() != 200)
throw new RuntimeException("url请求失败");
// 获取返回
inputStream = connection.getInputStream();
reader = new BufferedReader(new InputStreamReader(inputStream,"UTF-8"));
String line;
StringBuilder sb = new StringBuilder();
while ((line = reader.readLine()) != null)
sb.append(line);
return sb.toString();
catch (UnsupportedEncodingException e)
log.error(e.getMessage());
catch (ProtocolException e)
log.error(e.getMessage());
catch (MalformedURLException e)
log.error(e.getMessage());
catch (Exception e)
log.error(e.getMessage());
finally
try
outputStream.close(); // 关闭输出流
inputStream.close(); // 关闭输入流
reader.close(); // 关闭输入流
connection.disconnect(); // 断开连接
catch (IOException e)
log.error(e.getMessage());
return null;
public static void main(String[] args) throws Exception
String url = "https://aip.baidubce.com/rest/2.0/solution/v1/img_censor/v2/user_defined";
String access_token = "24.cd257ec6609688766241ced6fa767cbd.2592000.1629539906.282335-24583045";
String image = "略";
String imgUrl = "http://5b0988e595225.cdn.sohucs.com/images/20171213/c9d1d48cfe454d108920f55e53ec2c2d.jpeg";
// 上传
// File file = new File("D:\\\\baidu_test_img_1.jpg");
// byte[] bytes = Files.readAllBytes(file.toPath());
// String image = Base64.getEncoder().encodeToString(bytes);
JSONObject jsonObject = new JSONObject();
jsonObject.put("access_token", access_token);
jsonObject.put("image", URLEncoder.encode(image,"UTF-8")); // 因为是 application/x-www-form-urlencoded 所以先转码
// jsonObject.put("imgUrl", imgUrl);
String params = jsonObject.toString()
.replace("\\":\\"","=")
.replace("\\",\\"","&")
.replace("\\"","")
.replace("\\"","");
System.out.println(params);
String result = HttpUtil.doPost(url, params);
System.out.println(result);
参考资料
html学习笔记《一》
HTML一、简介 1.HTML是超文本标记语言,标准通用标记语言下的一个应用。 2.“超文本”就是指页面内可以包含图片、链接,甚至音乐、程序等非文字元素。 3.超文本标记语言的结构包括“头”部分(英语:Head)、... 查看详情
百度前端技术学院-精选笔记-1html学习笔记
以下是我个人的理解,希望得到肯定与指正,在此先感谢各位。而且不说温故知新,看别人的笔记就相当于复习了,记得更牢固。向大家安利四个在线编写页面的网站(在写笔记的时候,千万不要在预览的状态下点击链接,原因... 查看详情
osb学习笔记
OSB安装过程安装OSB集成开发平台(OEPE)安装OSB11g开发平台需要安装两个组件,一个是OEPE,它是基于Eclipse扩展的一个开发工具,用于OSB接口的开发,并且在此安装包内集成了weblogic中间件;另一个是ofm_osb_xxx,这个是OSB服务组件... 查看详情
java学习笔记3.8.2内部类-局部内部类
文章目录零、本讲学习目标一、内部类概述二、局部内部类(一)局部内部类定义(二)局部内部类说明(三)局部内部类案例演示1、创建学校类2、创建测试类零、本讲学习目标理解局部内部类的概念掌握局部内部类的使用一... 查看详情
arcgisjs学习笔记3实现百度风格的bubblepopup
1.开篇模仿是最好的学习,这次我们继续山寨百度,通过自定义Infowindow来实现百度风格的BubblePopup 2.准备2.1Copy模板先打开百度地图,按下f12吧BubblePopup的HTML代码和CSS代码拷贝下来,这里我无耻的把类名改了,大家不要在意细... 查看详情
学习笔记之03做百度搜索页面,未完
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="http://www.w3.org/1999/xhtml"><head><metahttp-equiv=" 查看详情
arcgisjs学习笔记2实现仿百度的拖拽画圆
一、前言 吐槽一下,百度在国内除了百度地图是良心产品外,其他的真的不敢恭维。在上一篇笔记里,我已经实现了自定义的地图测量模块。在百度地图里面(其他地图)都有一个周边搜索的功能,拖拽画... 查看详情
docker学习笔记(4-3)docker容器内部署静态网站
Docker学习笔记(4-3)Docker容器内部署静态网站 设置容器的端口映射如何访问容器的80端口《--设置端口映射-P 为所有端口映射 -p指定映射端口dockerrun-p80-i-tubuntu/bin/bashdockerrun-p8080:80-i-tubuntu/bin/bashdockerrun-p0.0.0.0:80-i-tubuntu... 查看详情
机器学习基石笔记无法学习?
天下没有白吃的午餐,从样本内到样本外永远无法估计。抽样的话,样本内频率和样本外概率相等PAC(probablyapproximatelycorrect) 一个重要的事情是样本要在总体分布中取。Ein(h)=sum(isSame(yHatn,yn))只要N足够大,Ein和Eout就很接近... 查看详情
springboot学习笔记内嵌tomcat和springmvc(代码片段)
springBoot学习笔记(五)内嵌tomcat和springmvc源码剖析内嵌tomcattomcat自动配置类ServletWebServerFactoryAutoConfigurationSpringBoot启动内置tomcat流程getWebServer方法的调用springmvc自动配置(一)自动配置DispatcherServlet和DispatcherServlet... 查看详情
拿到百度前端大佬整理的学习笔记,帮我搞定90%的前端面试!
前言激动的心颤抖的手,看着百度大佬整理的学习,嘴巴都要笑裂开了,别问哪来的,问就是我有个朋友哈哈哈哈哈。本着独乐乐不如众乐乐的心,小编把这份学习笔记分享出来,一起感受百度前端大佬的... 查看详情
css学习笔记
CSS常用帮助文档CSS:被用来同时控制多重网页的样式和布局。HTML页面中CSS样式的写法有3种: 1:标签中写入 <bodystyle=‘marginoauto;‘> 2:head头标签内 <style> body{margin:0auto;} </style> 3:head头标... 查看详情
百度飞浆ai创造营学习笔记
创意本期的第一课主要是创意的来源,三位小哥哥讲述了创意来源,思路和最后的验证,都可以落地,很有意思,对于我这样的小白很有启发。组合各种图像、以及语言,视频的拼接等。复刻游戏复刻特效... 查看详情
60分钟内从零起步驾驭hive实战学习笔记
本博文的主要内容是: 1. Hive本质解析 2. Hive安装实战 3. 使用Hive操作搜索引擎数据实战 SparkSQL前身是Shark,Shark强烈依赖于Hive。Spark原来没有做SQL多维度数据查询工具,后来开发了Shark,Shark依... 查看详情
esp8266学习笔记2:实现esp8266的局域网内通信
上一篇熟悉了编译下载操作。如今就以实例入手。project使用的是IOT_DEMO,据DEMO文档能够知道ESP8266初始工作模式为softAP+station共存的模式。于是这边我们就先以softAP入手。研究下局域网内的通信。转载请注明:http://blog.csdn.net/sadsh... 查看详情
jmeter学习笔记2-原件作用域与执行顺序
1.元件的作用域 (1)配置元件(configelements):会影响其作用范围内的所有元件。(2)前置处理程序(per-processors):在其作用范围内的每一个sampler元件之前执行。(3)定时器(timers):对其作用范围内的每一个sampler有效。... 查看详情
canvas学习笔记
canvas是HTML5的新标签,一般称为“画布”,通过js代码在这个“画布”上制作各种各样的图形、绚丽的效果等等。现在开始一步一步了解canvas:首先,需要在html中添加一个<canvasid=‘firstCanvas‘></canvas>,一般来说,我们可... 查看详情
汇编入门学习笔记——转移指令
疯狂的暑假学习之 汇编入门学习笔记(八)—— 转移指令參考:《汇编语言》王爽第9章能够改动ip或者同一时候改动cs和ip的指令统称为转移指令。8086CPU转移行为分为:段内转移:仅仅改动ip段间转移:同一时候改动cs和... 查看详情