このトピックでは、Java SDKを使用して人物情報を登録する方法について説明します。
使用上の注意
人物情報を登録する目的は、対応する人物に備考を追加することです。人物情報の登録は任意の手順です。人物に関する情報を登録すると、その情報はカスタム検索の戻り結果に含まれます。パラメーターの詳細については、人物情報を登録するための API オペレーションをご参照ください。
前提条件
Java の依存関係がインストールされていること。詳細については、インストールをご参照ください。
説明依存関係をインストールするには、インストール トピックに記載されている Java バージョンを使用する必要があります。そうでない場合、後続の操作呼び出しは失敗します。
画像モデレーションのためにローカル画像またはバイナリ画像ストリームを送信する場合は、Extension.Uploader ユーティリティクラス をダウンロードしてプロジェクトにインポートする必要があります。
人物情報を登録するためのサンプルコード
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.green.model.v20180509.SetPersonRequest;
import com.aliyuncs.http.FormatType;
import com.aliyuncs.http.HttpResponse;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;
/**
* 人物情報を登録します。
* @author
* @date 2018/06/25
*/
public class FaceSetPersonRequestSample {
public static void main(String[] args) throws Exception {
/**
* Alibaba Cloud アカウントの AccessKey ペアは、すべての API オペレーションに対する権限を持っています。セキュリティリスクを回避するために、RAM ユーザーを使用して API オペレーションを呼び出したり、日常の O&M を実行することをお勧めします。
* 環境変数を取得する一般的な方法:
* 方法 1:
* RAM ユーザーの AccessKey ID を取得します: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
* RAM ユーザーの AccessKey シークレットを取得します: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
* 方法 2:
* RAM ユーザーの AccessKey ID を取得します: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID");
* RAM ユーザーの AccessKey シークレットを取得します: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
*/
DefaultProfile profile = DefaultProfile.getProfile(
"cn-shanghai",
"RAM ユーザーの AccessKey ID を環境変数から取得することをお勧めします",
"RAM ユーザーの AccessKey シークレットを環境変数から取得することをお勧めします");
DefaultProfile.addEndpoint("cn-shanghai", "Green", "green.cn-shanghai.aliyuncs.com");
// 注: インスタンス化されたクライアントはできるだけ再利用することをお勧めします。これにより、モデレーションのパフォーマンスが向上し、クライアントの接続の繰り返しを回避できます。
IAcsClient client = new DefaultAcsClient(profile);
SetPersonRequest setPersonRequest = new SetPersonRequest();
setPersonRequest.setAcceptFormat(FormatType.JSON); // API レスポンス形式を指定します。
setPersonRequest.setMethod(com.aliyuncs.http.MethodType.POST); // リクエストメソッドを指定します。
setPersonRequest.setEncoding("utf-8");
JSONObject data = new JSONObject();
/**
* personId: カスタム人物の ID。このパラメーターは必須です。
* name: カスタム人物の名前。このパラメーターは任意です。
* note: 備考。このパラメーターは任意です。
*/
data.put("personId", "personId_test_3");
data.put("name", "Test");
data.put("note", "Remarks");
setPersonRequest.setHttpContent(data.toJSONString().getBytes("UTF-8"), "UTF-8", FormatType.JSON);
/**
* 接続タイムアウト期間と読み取りタイムアウト期間を指定します。
*/
setPersonRequest.setConnectTimeout(3000);
setPersonRequest.setReadTimeout(6000);
try {
HttpResponse httpResponse = client.doAction(setPersonRequest);
if (httpResponse.isSuccess()) {
JSONObject scrResponse = JSON.parseObject(new String(httpResponse.getHttpContent(), "UTF-8"));
System.out.println(JSON.toJSONString(scrResponse, true));
if (200 == scrResponse.getInteger("code")) {
JSONObject resultObject = scrResponse.getJSONObject("data");
if (200 == resultObject.getInteger("code")) {
System.out.println(resultObject.getString("personId"));
} else {
System.out.println("task process fail:" + resultObject.getInteger("code"));
}
} else {
System.out.println("detect not success. code:" + scrResponse.getInteger("code"));
}
} else {
System.out.println("response not success. status:" + httpResponse.getStatus());
}
} catch (ServerException e) {
e.printStackTrace();
} catch (ClientException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}