2010-12-07 2 views
0

Nominalement, l'URL http://www.google.com/accounts/RatePassword?Passwd=aaaaa peut être utilisée pour vérifier la force du mot de passe aaaaa. J'essaie de l'utiliser dans mon système GWT en utilisant un RequestBuilder pour obtenir la valeur, qui peut être comprise entre 1 et 4, mais je ne reçois pas la valeur. Quelqu'un peut-il deviner quel est le problème?Utilisation de GWT RequestBuilder pour vérifier la force du mot de passe avec Google

RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, 
    "http://www.google.com/accounts/RatePassword?Passwd=aaaaa"); 

    try { 
     Request response = builder.sendRequest(null, new RequestCallback() { 
     public void onError(Request request, Throwable exception) { 
      //error 
     } 

     public void onResponseReceived(Request request, Response response) { 
      Window.alert(""+response.getText()); 
     } 
     }); 
    } catch (RequestException e) { 
     // Code omitted for clarity 
    } 

Je fais ceci:

class PasswordStrength extends JavaScriptObject { 

      protected PasswordStrength() {} 

     public final native String getRating() /*-{ 
      return this.rating; 
     }-*/; 
    } 

JsonpRequestBuilder builder = new JsonpRequestBuilder(); 

    builder.requestObject(URL.encode(
       "https://www.google.com/accounts/RatePassword?Passwd=aaa"), 
       new AsyncCallback <PasswordStrength>(){ 

     @Override 
     public void onFailure(Throwable caught) { 
      // TODO Auto-generated method stub 
      Window.alert("Error"); 
     } 

     @Override 
     public void onSuccess(PasswordStrength result) { 
      // TODO Auto-generated method stub 
      Window.alert("NotError"); 
     }}); 

Mais j'obtiens cette erreur:

java.lang.ClassFormatError: Illegal method name "<init>$" in class com/BiddingSystem/client/BiddingSystem$1PasswordStrength 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632) 
    at java.lang.ClassLoader.defineClass(ClassLoader.java:616) 
    at java.lang.ClassLoader.defineClass(ClassLoader.java:466) 
    at com.google.gwt.dev.shell.CompilingClassLoader.findClass(CompilingClassLoader.java:1011) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:248) 
    at com.BiddingSystem.client.BiddingSystem$1.onSuccess(BiddingSystem.java:1) 
    at com.google.gwt.jsonp.client.JsonpRequest.onSuccess(JsonpRequest.java:201) 
    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.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103) 
    at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71) 
    at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:157) 
    at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessagesWhileWaitingForReturn(BrowserChannelServer.java:326) 
    at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:207) 
    at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:126) 
    at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:561) 
    at com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:269) 
    at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java:91) 
    at com.google.gwt.core.client.impl.Impl.apply(Impl.java) 
    at com.google.gwt.core.client.impl.Impl.entry0(Impl.java:214) 
    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.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103) 
    at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71) 
    at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:157) 
    at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessages(BrowserChannelServer.java:281) 
    at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:531) 
    at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:352) 
    at java.lang.Thread.run(Thread.java:662) 
+0

liés http://techblog.bozho.net/?p=274 – Bozho

+2

Tout comme un commentaire: Peu importe si vous utilisez ce vérificateur de mot de passe est une bonne idée ou non, mais je certainement pas envoyer le mot de passe via http. Le service est également disponible via https. –

Répondre

2

Nous l'utilisons de la façon suivante (détails ui omis):

public class PasswordStrengthWidget extends Composite { 

    private static class PasswordStrength extends JavaScriptObject { 

     protected PasswordStrength() {} 

     public final native String getRating() /*-{ 
      return this.rating; 
     }-*/; 
    } 

    private static final String RATING_URL = URL.encode("https://www.google.com/accounts/RatePassword?Passwd="); 
    private static final String[] STRENGTH = {"very weak", "weak", "medium", "strong"}; 
    @UiField 
    Label indicator; 
    private PasswordTextBox fPassword; 

    ... 

    private void updateStrengthIndicator() { 
     JsonpRequestBuilder request = new JsonpRequestBuilder(); 
     request.requestObject(RATING_URL + fPassword.getText(), new AsyncCallback<PasswordStrength>() { 

      @Override 
      public void onSuccess(PasswordStrength result) { 
       indicator.setText(STRENGTH[Integer.parseInt(result.getRating()) - 1] + result.getRating()); 
      } 

      @Override 
      public void onFailure(Throwable caught) { 
       indicator.setText("error calculating strength"); 
      } 
     }); 
    } 
} 

Assurez-vous d'ajouter cette ligne à votre module.xml:

<inherits name='com.google.gwt.jsonp.Jsonp' /> 
+0

Salut, j'essaie votre implémentation mais j'obtiens cette erreur java.lang.ClassFormatError: Nom de la méthode illégale " $" dans la classe com/BiddingSystem/client/BiddingSystem $ 1PasswordStrength – Noor

+0

J'ai ajouté les lignes requises dans le module sans succès – Noor

Questions connexes