gpt4 book ai didi

java - 应用引擎 : call endpoints of another module on the same server

转载 作者:行者123 更新时间:2023-12-02 06:04:50 24 4
gpt4 key购买 nike

我正在开发一个 App Engine 服务器,目前有 2 个模块。我有用于端点和同步模块的默认模块。第二个模块用于将我的服务器与另一个服务器同步。因此,我的同步模块从其他服务器获取数据,并且必须使用端点将其发送到默认模块。为此,我生成了 endpoints_client_library 并将该库添加到我的同步模块中。我尝试了很多情况,但无法正确传达我的端点。每次我都会收到“401 Unauthorized”之类的错误。

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

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

如果您需要一些代码,即使它不是很完整并且根本无法工作,请说出来,我会的。

我正在使用的 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

{
"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}"
}
}

最佳答案

遵循 Communication between Modules 的一般准则在 App Engine Modules in Java 。在第二个代码示例之后,它说您还可以使用 URL Fetch Service用于异步流量控制。

为了安全起见,文档继续建议被调用模块(您的端点)对请求进行身份验证。手动或基本扩展管理员登录解决方案通常不起作用,因为自动扩展是默认设置。在您的场景中,Inbound-AppId header 将是一个非常简单且安全的选择。

正如您愿意为您的问题添加更多详细信息一样,我很高兴尝试为此答案添加更多详细信息。

关于java - 应用引擎 : call endpoints of another module on the same server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22383108/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com