Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Appengine:调用同一服务器上另一个模块的端点_Java_Google App Engine_Module_Google Cloud Endpoints_Gae Module - Fatal编程技术网

Java Appengine:调用同一服务器上另一个模块的端点

Java Appengine:调用同一服务器上另一个模块的端点,java,google-app-engine,module,google-cloud-endpoints,gae-module,Java,Google App Engine,Module,Google Cloud Endpoints,Gae Module,我在一个应用引擎服务器上工作,目前有2个模块。我有用于端点的默认模块和同步模块。 第二个模块用于将我的服务器与其他服务器同步。因此,我的同步模块从其他服务器获取数据,并且必须使用端点将其发送到默认模块。 为此,我生成了endpoints_client_库,并将该库添加到我的同步模块中。我尝试了很多案例,但我无法正确地沟通我的端点。每次我都会出现“401未经授权”之类的错误 所以我不知道在我的服务器上使用生成的端点客户端库是否正确,或者是否有其他解决方案,可能更简单 我只想将数据从同步模块发送到默

我在一个应用引擎服务器上工作,目前有2个模块。我有用于端点的默认模块和同步模块。 第二个模块用于将我的服务器与其他服务器同步。因此,我的同步模块从其他服务器获取数据,并且必须使用端点将其发送到默认模块。 为此,我生成了endpoints_client_库,并将该库添加到我的同步模块中。我尝试了很多案例,但我无法正确地沟通我的端点。每次我都会出现“401未经授权”之类的错误

所以我不知道在我的服务器上使用生成的端点客户端库是否正确,或者是否有其他解决方案,可能更简单

我只想将数据从同步模块发送到默认模块

如果你需要一些代码,即使它不是很完整,根本不工作,只要说,我会

我正在使用的URLFetch代码:

AppIdentityService appIdentity = AppIdentityServiceFactory.getAppIdentityService();
AppIdentityService.GetAccessTokenResult accessToken = appIdentity.getAccessToken(Collections.singleton(scope));



URLFetchService fetcher = URLFetchServiceFactory.getURLFetchService();
FetchOptions options = FetchOptions.Builder.doNotFollowRedirects().disallowTruncate();
HTTPRequest request = new HTTPRequest(url, HTTPMethod.GET, options);

HTTPHeader userAgent = new HTTPHeader("User-Agent", "AppEngine-Google; (+http://code.google.com/appengine; appid: appId)");
request.addHeader(userAgent);
HTTPHeader autho = new HTTPHeader("Authorization", "OAuth "+accessToken.getAccessToken());
request.addHeader(autho);
HTTPHeader contentType = new HTTPHeader("Content-Type", "application/json");
request.addHeader(contentType);

HTTPResponse response = fetcher.fetch(request);

int code = response.getResponseCode();
String resp = new String(response.getContent());

System.out.println(code);
System.out.println(resp);
结果是:

401


请遵循中的一般指导原则。在第二个代码示例之后,它说您还可以将用于异步流控制

为了安全起见,该文档继续提供被调用模块(您的端点)的建议,以验证请求。手动或基本缩放管理员登录解决方案通常不起作用,因为默认情况下自动缩放。在您的场景中,入站AppId头将是一个非常简单和安全的选择


正如您愿意为您的问题添加更多细节一样,我也很乐意为这个答案添加更多细节。

是的,我已经阅读了这一页。我还尝试使用URLFetch在模块之间进行通信,问题是我总是有授权错误。在同步模块上,我有一个已登录的用户,但我无法通过URLFetch将其发送到默认模块,我的意思是我还没有找到如何做…我理解。安全建议可能使您能够在没有记录用户id的情况下获取URL,换句话说,匿名但仍然安全。然后,您可以将记录的用户id作为简单的数据而不是凭据传递。不幸的是,appengine服务器上的端点在任何情况下都需要记录的用户。这就是问题所在。。。我将在主帖子中添加我的URLFetch代码。如果您通过注释出request.addHeader(autho)匿名会发生什么?同样的事情。。。401,需要授权:/
{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "required",
    "message": "{\"class\":\"com.domain.server.cloud.CloudException\",\"code\":2}",
    "locationType": "header",
    "location": "Authorization"
   }
  ],
  "code": 401,
  "message": "{\"class\":\"com.domain.server.cloud.CloudException\",\"code\":2}"
 }
}