本教程展示了如何在Java应用程序中使用LEADTOOLS Cloud Services提取AAMVAID数据。
概述 | |
---|---|
总结 | 本教程介绍如何制作ExtractAAMVAID 请求并使用Java应用程序中的LEADTOOLS云服务处理结果。 |
完成时间 | 30分钟 |
项目 | 下载教程项目(5kb) |
平台 | LEADTOOLS云服务API |
IDE | IntelliJ |
语言 | Java |
开发许可 | 下载LEADTOOLS |
请务必查看以下网站,了解有关LEADTOOLS云服务API的信息。
LEADTOOLS服务计划提供:
服务计划 | 描述 |
---|---|
免费试用 | 免费评估 |
页面包 | 已付费页包 |
订阅 | 预付每月已处理页数 |
要进一步探索这些产品,请参阅LEADTOOLS托管云服务页面。
获取所需的“应用ID”和“应用密码”请参见使用LEADTOOLS托管的云服务创建帐户和应用程序。
在IDE中,使用Maven创建一个新的Java项目,并将以下必需的Maven依赖项添加到pom.xml
文件:
<依赖>
<groupId>org.json</ groupId>
<artifactId>json</ artifactId>
<版本>20210307</版本>
</依赖>
创建了项目并添加了包之后,就可以开始编码了。
在项目文件,打开App.java
。添加以下内容进口
语句在顶部。
进口org.json.JSONArray;
进口org.json.JSONObject;
进口java.io.File;
进口java.io.FileNotFoundException;
进口java.net.URI;
进口java.net.http.HttpClient;
进口java.net.http.HttpRequest;
进口java.net.http.HttpRequest.BodyPublisher;
进口java.net.http.HttpResponse;
进口java.nio.charset.StandardCharsets;
进口java.util.Base64;
进口java.util.concurrent.CompletableFuture;
进口java.util.concurrent.ExecutionException;
进口java.util.concurrent.TimeUnit;
进口java.util.concurrent.TimeoutException;
添加一个名为extractAAMVAID ()
。的extractAAMVAID ()
方法发送ExtractAAMVAID
请求LEADTOOLS云服务API。如果成功,将返回一个唯一标识符(GUID),然后使用该GUID进行查询。
将下面的代码添加到extractAAMVAID ()
方法。
私人静态无效extractAAMVAID () {
HttpClient client = HttpClient. newhttpclient ();
//文件中标记为处理的第一页
intfirstPage = 1;
//发送值-1将向服务表示应该处理文件中的所有页面。
intlastPage = -1;
//如果使用URL到文件
字符串fileURL =“http://demo.leadtools.com/images/cloud_samples/aamva_sample.png”;
conversionUrl = String.format(“认可/ ExtractAAMVAID吗?珍宝= % s&lastPage = % s&fileurl = % s”, firstPage, lastPage, fileURL);
Results = postAsync(converversionurl);零、客户端);
//如果上传文件为多部分内容:
// uploadFile = new File("path/to/ File ");
// String converversionurl = String.format("Recognition/ExtractAAMVAID? "firstPage=%s&lastPage=%s", firstPage, lastPage);
// Results = postAsync(converversionurl, uploadFile, client);
如果(results.getStatusCode() == 200) {
//服务返回的唯一ID
System.out.println (服务返回的唯一ID:+ results.getData ());
查询(results.getData(),客户端);
}其他的{
System.out.println ("请求失败,响应如下:"+ results.getStatusCode ());
}
}
接下来,创建一个名为查询(字符串id, HttpClient客户端)
类提供的GUIDextractAAMVAID ()
方法。如果成功,响应体将以JSON格式包含所有请求数据。一定要打给查询()
方法中的extractAAMVAID ()
方法,如上所示。将下面的代码添加到查询()
方法。
私人静态无效查询(字符串id, HttpClient客户端){
queryUrl = String.format(“查询?id = % s "、身份证);
结果结果;
JSONObject =新JSONObject ();
intfileStatus = 0;
做{
试一试{
结果= postAsync(queryUrl,零、客户端);
returnedData =新JSONObject (results.getData ());
fileStatus = returnedData.getInt(“FileStatus”);
如果(fileStatus != 200) Thread.sleep(5000);
}抓(InterruptedException e) {
/ / e.printStackTrace ();
}
}而(fileStatus == 0 || fileStatus == 100 || fileStatus == 123);
System.out.println ("文件已处理完毕,返回代码:"+ fileStatus);
如果(fileStatus != 200) {
返回;
}
parseJson (returnedData.get (“RequestData”) .toString ());
}
然后,创建两个名为parseJson (json字符串)
和postAsync(字符串路径,文件文件,HttpClient客户端)
,这两个函数都将在查询()
方法,如上所示。
将下面的代码添加到parseJson ()
方法处理返回的JSON数据。
私人静态无效parseJson(字符串json) {
JSONArray =新JSONArray (json);
为(对象:requestObject: requestArray) {
如果(requestObject运算符JSONObject) {
JSONObject返回= (JSONObject);
System.out.println (“服务类型:”+ requestReturn.getString (“ServiceType”));
System.out.println (返回的数据:“+ requestReturn.get (“数据”) .toString ());
System.out.println ();
}
}
}
将下面的代码添加到postAsync ()
方法创建客户端连接,通过该连接请求GUID和JSON数据。上面写着替换为应用程序ID
和替换为应用程序密码
请务必输入相应的应用程序ID和密码。有关如何获取应用程序ID和密码的信息,请参阅使用LEADTOOLS托管的云服务创建帐户和应用程序教程。
私人静态postAsync(字符串路径,对象主体,HttpClient客户端){
字符串AppId =“以申请编号代替”;
字符串密码=“以应用程式密码取代”;
字符串authHeader =“基本”+新字符串(Base64.getEncoder()。编码(AppId +”:“+密码).getBytes (StandardCharsets.UTF_8)));
hostdservicesurl =“https://azure.leadtools.com/api/”;
BodyPublisher thisBody = HttpRequest.BodyPublishers.ofString(“零”);
如果(身体运算符BodyPublisher) {
thisBody = (BodyPublisher) body;
}其他的如果(身体运算符文件){
试一试{
thisBody = HttpRequest.BodyPublishers.ofFile(((文件)body).toPath());
}抓(FileNotFoundException e) {
/ / e.printStackTrace ();
}
}
HttpRequest request = HttpRequest. newbuilder ()
. post (thisBody)
.uri (URI。创建(hostdservicesurl +路径)
.header (“接受”,“application / json”)
.header (“授权”authHeader)
.header (“内容类型”,“文本/普通”)
.build ();
CompletableFuture
> result = client。(请求,HttpResponse.BodyHandlers.ofString是以()); 结果结果=新结果();
results.setData (”“);
results.setStatusCode (0);
试一试{
results.setData (result.thenApply (HttpResponse::身体)。(5, TimeUnit.SECONDS));
results.setStatusCode (result.thenApply (HttpResponse:: statusCode)。(5, TimeUnit.SECONDS));
}抓(InterruptedException | ExecutionException | TimeoutException) {
e.printStackTrace ();
}
返回结果;
}
应用程序将需要一个助手类来存储帖子
请求。创建一个名为结果
并将下面的代码添加到其中。
私人静态类结果{
私人字符串数据;
私人intstatusCode;
公共字符串getData() {
返回数据;
}
公共无效setData(字符串数据){
这.data =数据;
}
公共intgetStatusCode () {
返回statusCode;
}
公共无效setStatusCode (intstatusCode) {
这.statusCode = statusCode;
}
}
为了测试运行此代码,请务必添加extractAAMVAID ();
到静空总管
部分。
按下运行项目Alt + F5,或选择运行>调试应用程序。
如果正确地执行了这些步骤,控制台将出现,应用程序将显示从返回的JSON数据中解析的AAMVAID信息。
本教程展示了如何在Java应用程序中通过LEADTOOLS Cloud Services API提取AAMVAID信息。