更新时间:2023-11-21 GMT+08:00
搜索数据示例
本章节对搜索数据AK/SK方式使用SDK进行示例说明。
搜索示例代码只需将AK/SK信息替换为实际AK/SK,代码中可以使用SearchParam类配置服务输入参数,其中使用SearchOptionalParam类配置服务的可选参数,配置完成后运行即可。
- 搜索数据调用示例代码如下:
package com.huaweicloud.sdk.test; import com.huaweicloud.sdk.core.auth.ICredential; import com.huaweicloud.sdk.core.auth.BasicCredentials; import com.huaweicloud.sdk.core.exception.ConnectionException; import com.huaweicloud.sdk.core.exception.RequestTimeoutException; import com.huaweicloud.sdk.core.exception.ServiceResponseException; import com.huaweicloud.sdk.core.region.Region; import com.huaweicloud.sdk.imagesearch.v2.*; import com.huaweicloud.sdk.imagesearch.v2.model.*; import java.util.List; import java.util.ArrayList; import java.util.Map; import java.util.HashMap; /** * 搜索 */ public class RunSearchSolution { public static void main(String[] args) { // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全 // 本示例以ak和sk保存在环境变量中来实现身份验证为例,运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK String ak = System.getenv("HUAWEICLOUD_SDK_AK"); String sk = System.getenv("HUAWEICLOUD_SDK_SK"); String iamEndpoint = "https://iam.cn-north-4.myhuaweicloud.com"; String endpoint = "https://mms.cn-north-4.myhuaweicloud.com"; String projectId = "project_id"; // 初始化客户端 ICredential auth = new BasicCredentials() .withIamEndpoint(iamEndpoint) .withProjectId(projectId) .withAk(ak) .withSk(sk); ImageSearchClient client = ImageSearchClient.newBuilder() .withCredential(auth) // 设置region, 示例中为北京四 .withRegion(new Region("cn-north-4", endpoint)) .build(); RunSearchRequest request = new RunSearchRequest(); request.withServiceName("service_name"); SearchParam body = new SearchParam(); SearchOptionalParam optionalParamsbody = new SearchOptionalParam(); optionalParamsbody.withDoDet(true) .withBox("135,489,1117,1341") .withDoCls(true); List<String> listCustomTagsCustomTags = new ArrayList<>(); listCustomTagsCustomTags.add("value1"); listCustomTagsCustomTags.add("value2"); listCustomTagsCustomTags.add("value3"); Map<String, List<String>> listbodyCustomTags = new HashMap<>(); listbodyCustomTags.put("key", listCustomTagsCustomTags); body.withOptionalParams(optionalParamsbody); // 替换为公网可以访问的图片地址 body.withImageUrl("https://bucketname.obs.cn-north-4.myhuaweicloud.com/image/test1.jpg "); body.withCustomTags(listbodyCustomTags); body.withOffset(0); body.withLimit(30); body.withSearchType(SearchParam.SearchTypeEnum.fromValue("CATEGORY")); request.withBody(body); try { RunSearchResponse response = client.runSearch(request); System.out.println(response.toString()); } catch (ConnectionException e) { e.printStackTrace(); } catch (RequestTimeoutException e) { e.printStackTrace(); } catch (ServiceResponseException e) { e.printStackTrace(); System.out.println(e.getHttpStatusCode()); System.out.println(e.getRequestId()); System.out.println(e.getErrorCode()); System.out.println(e.getErrorMsg()); } } }
- 执行示例代码文件,控制台输出搜索数据结果即表示程序执行成功。
class RunSearchResponse { result: success data: class SearchRestInfo { items: [class SearchItem { id: item_id score: 1.0 source: null }] searchInfo: class SearchInfo { totalNum: 1 returnNum: 1 searchTime: 969 lastItem: null } imageInfo: class SearchRestInfoImageInfo { box: 135,489,1117,1341 category: 0 categoryName: others objects: [class AddDataRestInfoImageInfoObjects { box: 135,489,1117,1341 category: 0 categoryName: others }] } } }
父主题: 使用SDK(Java)