Java Google应用程序引擎异常-当前线程未与任何请求关联,并且不是后台线程
我正试图通过一个跨平台的Java桌面应用程序中的GAE API来访问google analytics。我遵循了github的示例代码,但由于线程问题,请求没有被执行 以下是我的示例代码:Java Google应用程序引擎异常-当前线程未与任何请求关联,并且不是后台线程,java,multithreading,google-app-engine,google-analytics,measurement-protocol,Java,Multithreading,Google App Engine,Google Analytics,Measurement Protocol,我正试图通过一个跨平台的Java桌面应用程序中的GAE API来访问google analytics。我遵循了github的示例代码,但由于线程问题,请求没有被执行 以下是我的示例代码: ThreadManager.currentRequestThreadFactory().newThread(new Runnable() { @Override public void run() { try { GoogleAccountTracker
ThreadManager.currentRequestThreadFactory().newThread(new Runnable() {
@Override
public void run() {
try {
GoogleAccountTracker.trackEventToGoogleAnalytics("category1", "action1", "label1", "value1");
} catch (IOException e) {
e.printStackTrace();
}
}
});
我没有找到任何合适的SO线程来解决我的问题。如果你能找到,请提供我,而不是作为重复的问题标记。如果我得到了有效的解决方案,我会移除我的。
public static int trackEventToGoogleAnalytics(String category, String action, String label, String value) throws IOException {
Application.LOGGER.info("trackEventToGoogleAnalytics() started");
Map<String, String> map = new LinkedHashMap<>();
map.put("v", "1"); // Version.
map.put("tid", gaTrackingId);
map.put("cid", gaClientId);
map.put("t", "event"); // Event hit type.
map.put("ec", encode(category, true));
map.put("ea", encode(action, true));
map.put("el", encode(label, false));
map.put("ev", encode(value, false));
HTTPRequest request = new HTTPRequest(GA_URL_ENDPOINT, HTTPMethod.POST);
request.addHeader(CONTENT_TYPE_HEADER);
request.setPayload(getPostData(map));
HTTPResponse response = urlFetchService.fetch(request);
byte[] content = response.getContent();
URL finalUrl = response.getFinalUrl();
// 200, 404, 500, etc
int responseCode = response.getResponseCode();
List<HTTPHeader> headers = response.getHeaders();
for(HTTPHeader header : headers) {
String headerName = header.getName();
String headerValue = header.getValue();
Application.LOGGER.info(headerName + " " + headerValue);
}
Application.LOGGER.info("trackEventToGoogleAnalytics() ended");
return 0; //httpResponse.getResponseCode();
}
Caused by: java.lang.NullPointerException: Current thread is not associated with any request and is not a background thread
at com.google.appengine.api.ThreadManager.getCurrentEnvironmentOrThrow(ThreadManager.java:106)
at com.google.appengine.api.ThreadManager.currentRequestThreadFactory(ThreadManager.java:47)