Java中的Google API与Struts
如果我使用下面的方法使用一个普通的Java项目获取Google帐户的令牌,它工作得非常好,但是如果我在Struts项目中使用相同的代码,它会给我一个Java中的Google API与Struts,java,Java,如果我使用下面的方法使用一个普通的Java项目获取Google帐户的令牌,它工作得非常好,但是如果我在Struts项目中使用相同的代码,它会给我一个ClassNotFoundException。有人能告诉我为什么会抛出异常吗?我迷路了 public String Login(String username,String password){ String token = null; HttpClient client = new DefaultHttpClient();
ClassNotFoundException
。有人能告诉我为什么会抛出异常吗?我迷路了
public String Login(String username,String password){
String token = null;
HttpClient client = new DefaultHttpClient();
String postURL = "https://www.google.com/accounts/ClientLogin";
HttpPost post = new HttpPost(postURL);
List<NameValuePair> nvps = new ArrayList<NameValuePair>();
nvps.add(new BasicNameValuePair("accountType", "HOSTED_OR_GOOGLE"));
nvps.add(new BasicNameValuePair("Email", username));
nvps.add(new BasicNameValuePair("Passwd", password));
nvps.add(new BasicNameValuePair("service", "cp"));// Name of Google service
nvps.add(new BasicNameValuePair("source", "feras-MeAndTheGreenRobot-1.0"));
UrlEncodedFormEntity ent;
try {
ent = new UrlEncodedFormEntity(nvps, HTTP.UTF_8);
post.setEntity(ent);
HttpResponse responsePOST = client.execute(post);
HttpEntity resEntity = responsePOST.getEntity();
if (resEntity != null) {
String authToken= EntityUtils.toString(resEntity);
System.out.println("RESPONSE is "+ authToken );
token = authToken.substring(authToken.indexOf("Auth=") + 5, authToken.length()).trim();
System.out.println("Auth is "+ authToken.substring(authToken.indexOf("Auth=") + 5, authToken.length()).trim());
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return token;
}
您是否将HttpClient使用的jar库文件放在WEB项目的
“WEB-INF/lib”
文件夹下?我在Eclipse和Netbeans中都尝试过,但都不起作用。您可以发送您放在Eclipse WEB项目的“WEB-INF/lib”文件夹中的jar的完整列表吗?gwt-dev-2.4.0-rc1.jar,commons-logging-1.1.1.jar,struts2-core-2.0.14.jar+所有其他struts 2 libAnd关于HttpClient
?gwt-dev-2.4.0-rc1.jar用于HttpClient
java.lang.ClassNotFoundException: org.apache.http.client.ClientProtocolException
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1701)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1546)
at com.struts.action.LoginAction.submit(LoginAction.java:85)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:404)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:267)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:229)
at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:221)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:150)
at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:48)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:123)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:184)