This topic describes how to use the Java software development kit (SDK) to query the details of a similar image sample.
Description
You can call this operation to query the details of a similar image sample. For more information about the parameters, see Query the details of an image library.
You must use the Content Moderation endpoint to call the service using the SDK. For more information about API endpoints, see Endpoints.
Prerequisites
Java dependencies are installed. For more information, see Installation.
NoteYou must use the Java version described in the Installation topic to install the dependencies. Otherwise, subsequent operation calls fail.
The Extension.Uploader utility class is downloaded and imported into your project if you submit a local image or a binary image stream for image moderation.
Query job for similar image sample details
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.green.model.v20180509.GetSimilarityImageRequest;
import com.aliyuncs.http.FormatType;
import com.aliyuncs.http.HttpResponse;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.http.ProtocolType;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;
public class GetSimilarityImageSample {
public static void main(String[] args) throws Exception {
/**
* An Alibaba Cloud account AccessKey has full permissions on all APIs. Use a Resource Access Management (RAM) user to make API calls or perform routine O&M.
* Common methods to obtain environment variables:
* Method 1:
* Obtain the AccessKey ID of the RAM user: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
* Obtain the AccessKey secret of the RAM user: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
* Method 2:
* Obtain the AccessKey ID of the RAM user: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID");
* Obtain the AccessKey secret of the RAM user: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
*/
DefaultProfile profile = DefaultProfile.getProfile(
"cn-shanghai",
"Get AccessKey ID from environment variable",
"Get AccessKey secret from environment variable");
DefaultProfile.addEndpoint("cn-shanghai", "Green", "green.cn-shanghai.aliyuncs.com");
IAcsClient client = new DefaultAcsClient(profile);
GetSimilarityImageRequest request = new GetSimilarityImageRequest();
// Specify the API response format and the request method.
request.setAcceptFormat(FormatType.JSON);
request.setMethod(MethodType.POST);
request.setEncoding("utf-8");
request.setProtocol(ProtocolType.HTTP);
JSONObject httpBody = new JSONObject();
httpBody.put("library", "Name of the similar image library");
httpBody.put("dataId", "ID of the sample image");
request.setHttpContent(org.apache.commons.codec.binary.StringUtils.getBytesUtf8(httpBody.toJSONString()),
"UTF-8", FormatType.JSON);
/**
* Set the timeout period. The server-side timeout period is 10 seconds.
* If the ReadTimeout period that you set is shorter than the server-side processing time, a ReadTimeout exception is returned.
*/
request.setConnectTimeout(3000);
request.setReadTimeout(10000);
HttpResponse httpResponse = null;
try {
httpResponse = client.doAction(request);
// The result returned by the server after it receives and processes the request.
if (httpResponse != null && httpResponse.isSuccess()) {
JSONObject scrResponse = JSON.parseObject(org.apache.commons.codec.binary.StringUtils.newStringUtf8(httpResponse.getHttpContent()));
System.out.println(JSON.toJSONString(scrResponse, true));
int requestCode = scrResponse.getIntValue("code");
JSONObject data = scrResponse.getJSONObject("data");
if (200 == requestCode) {
// The timestamp when the image was created.
int createTime = data.getIntValue("createTime");
// The unique ID of the image.
String dataId = data.getString("dataId");
// The URL of the image.
String url = data.getString("url");
} else {
/**
* Indicates that the entire request failed. Analyze the specific situation to determine the cause.
*/
System.out.println("the whole request failed. response:" + JSON.toJSONString(scrResponse));
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}