2016-08-29 7 views
0

Ich bin neu in Android zu entwickeln, und ich versuche https://m.colorado.edu/mycuinfo/ mit OKHTTP3Android Post Anfrage fehlgeschlagen mit OKHTTP

verfolgt anmelden meine Codes sind

 OkHttpClient client = new OkHttpClient(); 

     HttpUrl url = HttpUrl.parse(urlString).newBuilder() 
       .addQueryParameter("j_username", username) 
       .addQueryParameter("j_password", password) 
       .build(); 
     Request request = new Request.Builder() 
       .url(url) 
       .build(); 

     try { 
      Response response = client.newCall(request).execute(); 
      System.out.println(response.body().string()); 

     } catch (IOException e){ 
      e.printStackTrace(); 
     } 

Die URL POST ist https://m.colorado.edu/mycuinfo/j_security_check

Aber die Antwort ist nur die Source CODE für die Login-Seite.

<form data-ajax="false" id="LoginForm" name="lForm" method="POST" action="j_security_check" autocomplete="off"> 
<p></p> 
<b>CU Login Name:</b><br> <input tabindex="1" type="text" name="j_username" size="20" data-theme="c" /> 
<p></p> 
<b>IdentiKey Password:</b><br> <input tabindex="2" type="password" name="j_password" size="20" data-theme="c" /> 
<p></p> 
<button data-ajax="false" data-theme="a" value="Log in" tabindex="3">Login</button> 
<p></p> 

' Irgendwelche Gedanken?

Ich persönlich denke, es zu Sitzung und Cookies sein sollte, aber ich weiß nicht, wie das zu tun mit OKHTTP

+0

Ich versuchte https://m.colorado.edu/mycuinfo/j_security_check?j_username=**&j_password=*** über Browser, es funktioniert. Aber wenn ich OKHTTP verwende, dasselbe Ergebnis. – jamiez

Antwort

1

Ich denke nicht, sollten Sie versuchen, eine POST Anfrage vorbei Abfrageparameter zu tun. QueryParameters werden normalerweise für GET Anfragen verwendet. Versuchen Sie, eine RequestBody zu bauen und eine Anforderung mit ihm ausführen, wie folgt aus:

RequestBody formBody = new FormEncodingBuilder() 
    .add("j_username", username) 
    .add("j_password", password) 
    .build(); 
Request request = new Request.Builder() 
    .url(urlString) 
    .post(formBody) 
    .build(); 

Response response = client.newCall(request).execute(); 
+0

Ich denke 'FormEncodingBuilder' ist veraltet und ich habe das zu FormBody.Builder() geändert. Aber es wird nicht funktionieren .... Geht es um Sitzungen und Cookies? – jamiez

0

Rafael Cardoso Kommentar hinzuzufügen Sie definitiv sollte nicht mit Hilfe von Abfrageparametern sein Benutzer anmelden, die ein Sicherheitsrisiko betrachtet wird. . Die Verwendung einer RequestBody über eine gesicherte Verbindung ist vorzuziehen.