我有一个谷歌云端点api应用程序,我想从另一个谷歌应用程序引擎Web应用程序,从servlet说。云端点api不受保护。
我尝试寻找示例,但找不到一个。我看到与Android客户端相关的示例。 当尝试使用URLConnection它不起作用,我不确定是否也正确,样本代码或指针将有很大的帮助。我还检查了云端点api的日志,看看是否有任何请求通过,但我没有看到日志中的任何错误。
答案 0 :(得分:0)
我也是这样做的,尽管有认证。您可以在MyAPI / build / libs / MyAPI-v1-SNAPSHOT.jar中使用端点API生成的Jar,就像在Android中一样。
一旦您依赖该JAR,构建API客户端的代码应如下所示。我正在使用OAuth身份验证和服务帐户,我将留在那里,因为它是您最终可能需要的更复杂的部分。但是,如果没有身份验证,您应该只能将凭据设置为null。
HttpTransport HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport();
JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance();
List<String> SCOPES = Arrays.asList(EMAIL_SCOPE);
String SERVICE_ACCCOUNT_ID = "my-account-id@my-app.iam.gserviceaccount.com";
String CREDENTIAL_FILE = "WEB-INF/my-file.p12";
GoogleCredential credential = new GoogleCredential.Builder()
.setTransport(HTTP_TRANSPORT)
.setJsonFactory(JSON_FACTORY)
.setServiceAccountId(SERVICE_ACCCOUNT_ID)
.setServiceAccountScopes(SCOPES)
.setServiceAccountPrivateKeyFromP12File(new File(CREDENTIAL_FILE))
.build();
MyAPI.Builder builder = new MyAPI.Builder(
HTTP_TRANSPORT,
JSON_FACTORY, credential)
// options for running against local devappserver
// - 10.0.2.2 is localhost's IP address in Android emulator
// - turn off compression when running against local devappserver
.setRootUrl("http://localhost:8080/_ah/api/")
// .setRootUrl("https://my-appengine-url.appspot.com/_ah/api")
MyAPI myAPI = builder.build();
答案 1 :(得分:0)
您无法使用URLConnection从App Engine进行端点调用。请改用FetchURL
。如果设置doNotFollowRedirect
,您将在被叫App Engine项目中收到X-Appengine-Inbound-Appid
标题。你可以信任这个标题,因为如果有人关闭App Engine,谷歌会将其剥离。确保您定位到yourproject.appspot.com
域,因为它无法使用自定义域。