2016-03-21 4 views
-2

ich für einige Ratschläge bin auf der Suche die folgende Situation in Bezug auf:HttpsURLConnection Upgrade auf Volley/Nachrüstung

ich derzeit eine HttpsURLConnection (SSL) auf ‚erfolgreich‘ login auf einer Website, die Daten, die ich brauche zu holen JSON (unter Screenshot als Beispiel).

enter image description here

Die Anmeldeprozedur ist wie folgt:

  1. eine GET Führen Sie die (Set-Cookie) Headern zu greifen (die 2, JSESSIONID, PD-S-Session-ID)
  2. Führen
  3. eine POST mit meinen Zugangsdaten (einschließlich dieser 2-Cookies)
  4. eine endgültige GET Führen Sie die HTML-Seite abgerufen werden (Login Antwort ist kein JSON)
  5. Greifen Sie auf die customerID zu, die in der HTML-Antwortzeichenfolge versteckt ist (nur nach einer erfolgreichen Anmeldung), die ID wird benötigt, um die tatsächlichen JSON-Daten, nach denen ich suche, zu erfassen.

Aufgrund der Tatsache, dass die tatsächlichen Daten, die ich brauche in JSON vorgesehen ist und Ich muss immer noch der Parsing-Code dem Schreiben beginnen, ich habe mich gefragt, ob ich wechseln sollte volley/Nachrüstung, da diese 2 sind viel schneller dann httpurlconnection. Ich habe bereits eine Recherche/Code-Suche auf StackOverflow und dem INet über Volley/Retrofit gemacht, aber ich kann anscheinend keine guten Beispiele finden, um den Login-Vorgang durchzuführen (was ich tun muss).

Fragen bisher:

  • die Website benutzt Umleitungen (302), Volley kann/Retrofit diese umgehen? Plante verwenden 'com.mcxiaoke.volley: Bibliothek: 1.0.19'
  • gibt es 2 Set-Cookie-Header, Volleyball ist nur in der Lage 1 Set-Cookie-Header zu speichern (andere überschrieben werden?)
  • , wie man Kombiniere ein GET, POST und ein finales GET in Volley/Retrofit? Ich konnte nur Beispiele von 1 GET, 1 POST gleichzeitig finden. Ich wollte einen Singleton verwenden, da die App ständig mit INet verbunden sein sollte.

Mein eigentliches Problem ist umschreiben des Login-Code, die ich (HttpsURLConnection) volley oder nachrüsten (, wie die Set-Cookies zu handhaben, Umleitungen, kombiniert die GET und POST-Methoden, die benötigt) . Das eigentliche Parsen der JSON-Daten (einmal eingeloggt) sollte kein Problem sein.

Nicht missverstanden werden. Ich bitte nicht, mir einen Beispielcode zu schreiben. Ich suche nur ein paar gute Richtlinien/Beispiele? Und lohnt es sich, die 60-70% Geschwindigkeitssteigerung, die Volley/Retrofit haben sollte, zu verbessern?

Oder sollte ich das Problem speichern und nur bei meiner Arbeit HttpsUrlConnection asynctask bleiben?

Vielen Dank im Voraus für Ihre Beratung.

+0

Downvotes? Ich bitte nur um einige beratende Leute, freundlich zu verstehen. – Simon

Antwort

0

Kombination POST/GET-Anfragen in Retrofit2 leicht ist (Sie können sie anrufen synchron oder asynchron), lesen Sie Tutorials. Wenn Sie Retrofit als Haupt-REST-Client in zukünftigen Projekten verwenden möchten, können Sie sich auch die RxJava-Unterstützung ansehen (die Kombination von Anforderungen ist dort sehr schön), aber es braucht etwas Zeit, um es vollständig zu verstehen und zu fühlen.

Nachrüstung kann Weiterleitungen umgehen, Cookies sollten auch kein Problem sein. Um genau zu sein, ist es nicht wirklich ein Retrofit-Problem, sondern ein OkHttp-Client, auf dem Retrofit basiert. Sie müssen auch CookieManager und CookieStore einrichten. Nützliche Links: 12345

So ... Retrofit können alle Ihre Aufgaben bewältigen, aber es ist schwer zu sagen, wenn es schneller arbeiten werden. Wenn Sie nur dieses Login-Modul umschreiben möchten und Ihr aktueller Code funktioniert, bin ich mir nicht sicher, ob es sich lohnt, zu einer anderen Bibliothek zu wechseln. Es sei denn, diese Login-Zeit ist wirklich lang und inakzeptabel, als es zu versuchen (bitte teilen Sie uns später, wenn es geholfen hat).

+0

viele thx für Ihre Antwort. Eigentlich bin ich damit beschäftigt, volley + okhttp zur Arbeit zu bringen, aber rannte in einige Schwierigkeiten, der Login benötigt zwar bestimmte params formatiert und gibt kein JSon-Objekt zurück, ich verweise auf meine Frage: http://stackoverflow.com/questions/36157933/ Volley-Post-Anfrage-nicht-arbeiten. Ich dachte wirklich darüber nach, dies fallen zu lassen, da ich bereits einen funktionierenden Login-Code habe, aber da die Acrual-Daten, die ich brauche, JSon ist, möchte ich das mit volley + okhttp arbeiten lassen. – Simon

+0

Ich habe deine Antwort akzeptiert, da sie mich auf den richtigen Weg gebracht hat, unter Verwendung des hartnäckigsten Kochkurses. Obwohl ich volley + okhttp verwendet habe, um einen erfolgreichen Login zu bekommen. Arbeitscode: http://stackoverflow.com/questions/36157933/volley-post-request-not-working Thx wieder. – Simon

Verwandte Themen