java人脸识别api_百度人脸识别api demo

自己用Java写的一个可以参考一下,我这种5年没写过代码的人都能写,难道比我还新手?你需要多一些信念!

46e203c5e6af3ac170d8aa9de41a2d89.gif

package com.baidu.cloudservice.bfr;

import java.io.UnsupportedEncodingException;

import java.net.URLEncoder;

import java.nio.charset.Charset;

import java.util.Date;

import javax.crypto.Mac;

import javax.crypto.spec.SecretKeySpec;

import org.apache.commons.codec.binary.Hex;

import com.baidubce.BceClientException;

import com.baidubce.util.DateUtils;

public class BFRSign {

private static final String DEFAULT_ENCODING = "UTF-8";

private static final Charset UTF8 = Charset.forName(DEFAULT_ENCODING);

public static void main(String[] args) throws Exception {

// System.out.println(DateUtils.formatAlternateIso8601Date(new Date()));

String accessKey = "xxxxxxxxxxxxxxxxxxxxxxxx";

String secretKey = "xxxxxxxxxxxxxxxxxxxxxxxx";

String host = "face.bj.baidubce.com";

//String path = "/v1/app";//工程

//String path = "/v1/app/40004/group";//组

//String path = "/v1/app/40004/person";  //人物

//String path ="/v1/app/40004/person/Steve";//验证图片是否属于某个人

String path ="/v1/app/40004/group/yerik"; //验证图片是否属于某个组

String timestamp = DateUtils.formatAlternateIso8601Date(new Date());

int expiresInSeconds = 18000;

String CanonicalURI = URLEncoder.encode(path, "UTF-8").replace("%2F","/");

System.out.println("CanonicalURI: "+CanonicalURI);

//        String queryString=new String("verify");

String queryString=new String("identify");

String canonicalQueryString =canonicalQueryString(queryString);

//String requestMethod="GET";

String requestMethod="POST";

//String requestMethod="PUT";

String canonicalHeaders = "host:"+host;

String CanonicalRequest = joinN("\n", new String[] { requestMethod,CanonicalURI, canonicalQueryString, canonicalHeaders });

System.out.println("CanonicalRequest: "+CanonicalRequest);

/*输出结果、请求内容

{"appId":"40004"}

{ "groupName": "yerik"}

{

"personName": "Steve",

"groupName": "yerik",

"faces": [

{

"bosPath":"yerik-bfr/1.jpg"

},

{

"bosPath":"yerik-bfr/2.jpg"

},

{

"bosPath":"yerik-bfr/3.jpg"

},

{

"bosPath":"yerik-bfr/4.jpg"

},

{

"bosPath":"yerik-bfr/5.jpg"

},

{

"bosPath":"yerik-bfr/6.jpg"

},

{

"bosPath":"yerik-bfr/7.jpg"

},

{

"bosPath":"yerik-bfr/8.jpg"

}

]

}

{

"bosPath":"yerik-bfr/test1.jpg"

}

*/

//通过AK+时间戳+过期时间拼接成signKeyInfo

String signKeyInfo = "bce-auth-v1" + "/" + accessKey + "/" + timestamp+ "/" + expiresInSeconds;

System.out.println("signKeyInfo: "+signKeyInfo);

//将signKeyInfo与SK加密生成signingKey

String signingKey = sha256Hex(secretKey, signKeyInfo);

System.out.println("signingKey: "+signingKey);

//将signingKey与CanonicalRequest加密生成signature

String signature = sha256Hex(signingKey, CanonicalRequest);

//通过signature合成authorization

String authorization = joinN("/", new String[] { "bce-auth-v1",accessKey, timestamp, String.valueOf(expiresInSeconds), "host",signature });

System.out.println("authorization: \n"+authorization);

System.out.println("URL: \nhttp://"+host+CanonicalURI+"?"+canonicalQueryString);

}

private static String joinN(String split, String[] args) {

String ret = args[0];

for (int i = 1; i < args.length; i++)

ret = ret + split + args[i];

return ret;

}

public static String sha256Hex(String signingKey, String stringToSign) {

try {

Mac mac = Mac.getInstance("HmacSHA256");

mac.init(new SecretKeySpec(signingKey.getBytes(UTF8), "HmacSHA256"));

return new String(Hex.encodeHex(mac.doFinal(stringToSign

.getBytes(UTF8))));

} catch (Exception e) {

throw new BceClientException("Fail to generate the signature", e);

}

}

//canonicalQueryString转换

public static String canonicalQueryString(String queryString) throws Exception{

String canonicalQueryString="";

String[] keyValueList =queryString.split("&");

int position;

String key=null;

String value=null;

if (queryString.isEmpty()){

System.out.println("canonicalQueryString1: "+canonicalQueryString);

return canonicalQueryString;

}else{

for (int i=0;i

position=keyValueList[i].indexOf("=");

if (position<0){

key=URLEncoder.encode(keyValueList[i], "UTF-8");

value="";

}else{

key=URLEncoder.encode(keyValueList[i].substring(0,position), "UTF-8");

value=URLEncoder.encode(keyValueList[i].substring(position+1,keyValueList[i].length()), "UTF-8");

}

//System.out.println("Key"+i+": "+key+"----"+"Value"+i+": "+value);

keyValueList[i]=key+"="+value;

if(i==keyValueList.length-1){

canonicalQueryString=canonicalQueryString+keyValueList[i];

}else{

canonicalQueryString=canonicalQueryString+keyValueList[i]+"&";

}

}

System.out.println("canonicalQueryString2: "+canonicalQueryString);

}

return canonicalQueryString;

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值