我正在使用當前有2個模塊的App Engine服務器。我有用於端點和同步模塊的默認模塊。 這個第二個模塊用於將我的服務器與另一個模塊同步。因此,我的同步模塊從其他服務器獲取數據,並且必須使用端點將其發送到默認模塊。 爲此,我生成了endpoints_client_library並將庫添加到我的同步模塊中。我嘗試了很多案例,但無法正確傳達我的終端。每次我收到錯誤,如「401未經授權」。Appengine:調用同一服務器上另一個模塊的端點
所以我不知道這是否是使用生成的端點客戶端庫我的服務器上以正確的方式或是否有另一種解決方案,也許simplier ...
我只是想從我同步發送數據模塊默認。
如果你需要一些代碼,即使它不是非常完整,根本不工作,只要說出口即可。
我使用的網址提取代碼:
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);
而結果:
{
"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}"
}
}
是的,我已閱讀此頁。我也嘗試使用URLFetch在模塊之間進行通信,問題是我總是有授權錯誤。在同步模塊上,我有一個登錄用戶,但我無法通過URLFetch將其發送到默認模塊,我的意思是我沒有找到如何執行... –
我明白。這些安全建議可以讓您在沒有記錄用戶標識的情況下進行網址提取,換句話說就是匿名但仍然安全。然後,您可以將記錄的用戶標識作爲簡單數據而不是憑據。 –
不幸的是,在任何情況下,appengine服務器上的端點都需要登錄的用戶。這就是問題所在......我將在主帖中添加我的URLFetch代碼。 –