如何使用RESTAPI Java使Google CDN缓存失效?

如何使用RESTAPI Java使Google CDN缓存失效?,java,google-cloud-platform,google-compute-api,Java,Google Cloud Platform,Google Compute Api,我一直在研究这方面的工作示例,但没有找到任何 我参考了以下链接 及 从这些文档中,我明白了我需要实现这一点 import com.google.api.client.googleapis.auth.oauth2.GoogleCredential; import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport; import com.google.api.client.http.HttpTransport; impor

我一直在研究这方面的工作示例,但没有找到任何

我参考了以下链接 及

从这些文档中,我明白了我需要实现这一点

import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
import com.google.api.client.http.HttpTransport;
import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.jackson2.JacksonFactory;
import com.google.api.services.compute.Compute;
import com.google.api.services.compute.model.CacheInvalidationRule;
import com.google.api.services.compute.model.Operation;
import java.io.IOException;
import java.security.GeneralSecurityException;
import java.util.Arrays;

public class ComputeExample {
  public static void main(String args[]) throws IOException, GeneralSecurityException {
    // Project ID for this request.
    String project = "my-project"; // TODO: Update placeholder value.

    // Name of the UrlMap scoping this request.
    String urlMap = "my-url-map"; // TODO: Update placeholder value.

    // TODO: Assign values to desired fields of `requestBody`:
    CacheInvalidationRule requestBody = new CacheInvalidationRule();

    Compute computeService = createComputeService();
    Compute.UrlMaps.InvalidateCache request =
        computeService.urlMaps().invalidateCache(project, urlMap, requestBody);

    Operation response = request.execute();

    // TODO: Change code below to process the `response` object:
    System.out.println(response);
  }

  public static Compute createComputeService() throws IOException, GeneralSecurityException {
    HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport();
    JsonFactory jsonFactory = JacksonFactory.getDefaultInstance();

    GoogleCredential credential = GoogleCredential.getApplicationDefault();
    if (credential.createScopedRequired()) {
      credential =
          credential.createScoped(Arrays.asList("https://www.googleapis.com/auth/cloud-platform"));
    }

    return new Compute.Builder(httpTransport, jsonFactory, credential)
        .setApplicationName("Google-ComputeSample/0.1")
        .build();
  }
}
但是,如果您看到这个示例,它的位置上只有占位符值

如果我想刷新名为 在上述代码中,我将在何处输入此信息?

我加在这里了吗

 credential.createScoped(Arrays.asList("https://mywebsite.com/homepage.html"));

或者我应该将其添加到UrlMaps中?这非常令人困惑。

它应该放在请求正文中。请求机构:

这些字段包含以下内容:

  • 路径作为字符串
  • 主机作为字符串
如果设置,此无效规则将仅适用于主机标头与主机匹配的请求

您可能需要创建requestbody对象

CacheInvalidationRule requestBody = new CacheInvalidationRule();
这将创建CacheInvalizationRule对象并分配给requestBody

此外,您可能还需要这样做

requestBody.setHostand requestBody.setPath = ""
这两个属性将字符串作为参数

requestBody.setHost=" mywebsite.com"


希望它有帮助,祝你好运

我建议检查Compute.UrlMaps.InvalidateCache,description我相信它将有助于你理解这个类以及如何将它合并到你的代码中。例如,它包含方法详细信息和参数描述

构造详细信息 废品车

protected InvalidateCache(java.lang.String project,
                          java.lang.String urlMap,
                          CacheInvalidationRule content)
启动缓存无效操作,使指定路径无效,作用域为指定的UrlMap。为方法“urlMaps.invalidateCache”创建请求。此请求保存计算服务器所需的参数。设置任何可选参数后,调用AbstractGoogleClientRequest.execute()方法调用远程操作

InvalidateCache#初始化(com.google.api.client.googleapis.services.AbstractGoogleC lientRequest)

必须在调用构造函数后立即调用以初始化此实例

参数:

  • project-此请求的项目ID
  • urlMap—作用于此请求的urlMap的名称
  • 内容—
    cacheinvalizationrule
setAlt的方法详细信息示例 设置


谢谢你这样一个描述性的回答。我照你说的做了,现在我得到了PKIXSSL异常。这是否意味着缓存失效请求正在工作,但现在这是另一个问题。如果是这样的话,我会接受你的回答,并为下一个问题提出另一个问题。但是你能确认这是真的吗?要确认r缓存失效是否有效,你能分享你得到的确切错误吗?这可能是因为您试图访问使用SSL加密的应用程序,例如HTTPS,这将引发异常,连接将被拒绝。您可以检查几件事:根据连接到SSL服务说明,确认已将目标实例的公共证书导入信任库。同时确认已将任何证书导入正确的信任库;您可能有多个JRE/JDK。您还可以验证目标服务器是否配置为正确提供SSL服务。这可以通过SSL服务器测试工具完成。如果所有其他操作都失败,您的信任库可能已过时。将Java升级到应用程序支持的最新版本。我按照您所说的做了,我可以使用requestBody设置刷新缓存的路径。关于SSL问题,我不确定发生了什么,但几天后它就起作用了。可能是来自DevOps团队的人员安装了SSL证书。谢谢
requestBody.setPath = "/homepage.html"
protected InvalidateCache(java.lang.String project,
                          java.lang.String urlMap,
                          CacheInvalidationRule content)
public Compute.UrlMaps.InvalidateCache set(java.lang.String parameterName,
                                           java.lang.Object value)