0

我需要多次调用 rest api 来获取实例、卷和 vnic 详细信息。我可以重复使用为签署其他调用而创建的相同签名者对象吗?

签名者对象方法

   public RequestSigner getSigner(Properties properties, String pemFilePath, String apiKey) {
    InputStream privateKeyStream;
    PrivateKey privateKey = null;
    try {
        privateKeyStream = Files.newInputStream(Paths.get(pemFilePath));
        privateKey = PEM.readPrivateKey(privateKeyStream);
    } catch (InvalidKeySpecException e) {
        // throw new RuntimeException("Invalid format for private key");
        properties.setProperty(OracleCloudConstants.CUSTOM_DC_ERROR,
                FormatUtil.getString("am.webclient.oraclecloud.customdc.invalidformat"));
        AMLog.debug("OracleCloudDataCollector::CheckAuthentication()::Invalid format for private key::"
                + e.getMessage());
        e.printStackTrace();
    } catch (IOException e) {
        properties.setProperty(OracleCloudConstants.CUSTOM_DC_ERROR,
                FormatUtil.getString("am.webclient.oraclecloud.customdc.failedload"));
        AMLog.debug(
                "OracleCloudDataCollector::CheckAuthentication()::Failed to load private key::" + e.getMessage());  //No I18N
        e.printStackTrace();
        // throw new RuntimeException("Failed to load private key");
    }
    RequestSigner signer = null;
    if (privateKey != null) {
        signer = new RequestSigner(apiKey, privateKey);
    }
    return signer;
}
4

1 回答 1

1

一个签名者对象可用于签署多个请求。事实上,SDK 实现也是这样做的。

目前尚不清楚您使用的是什么版本的 SDK。在版本 1.5.7(撰写本文时的最新版本)中,com.oracle.bmc.http.signing.RequestSigner ( https://github.com/oracle/oci-java-sdk/blob/master/bmc- common/src/main/java/com/oracle/bmc/http/signing/RequestSigner.java#L16)是一个不能按照上面的代码片段进行新的接口。

于 2019-05-30T23:04:43.407 回答