WebView Post

  • Antworten:7
  • Bentwortet
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

31.08.2012, 12:21:06 via Website

Hallo,
Ich habe ein Problem

Hier mein Code:

1WebView browser = (WebView)findViewById(R.id.webView1); //WebBrowser
2 WebSettings ws = browser.getSettings();
3 ws.setJavaScriptEnabled(true); //Javascript Aktivieren
4 String postData = "__EVENTTARGET=&__EVENTARGUMENT=&__VIEWSTATE= ... Ewig langer Code ...&Login1&UserName=userl&Login1$Password=blabla&Login1$LoginButton=anmelden"; //Der Post String
5
6browser.setWebViewClient(new WebViewClient(){
7 @Override
8 public boolean shouldOverrideUrlLoading(WebView wView, String url)
9 {
10
11 wView.loadUrl(url);
12 return true;
13 }
14});
15
16
17
18browser.postUrl("https://myHomepage/script.php",EncodingUtils.getBytes(postData, "BASE64"));

Mein Problem:

Im Post __Viewstate=... kommen Plus "+" im String vor, diese werden auf der geposteten Seite nicht angezeigt.
Ich habe schon versucht das Charset zu ändern hat aber nichts genützt.
Den Post Code in einer HTML Form funktioniert super. Ich glaube es liegt wirklich datran,dass das Charset falsch ist oder das byte keine Plus "+" können.
Die Posts habe ich auf meiner eigenen Homepage abgegangen mit dem Code:

1[PHP]<?php
2var_dump($_POST);
3?>[/PHP]

Könnt ihr mir helfen?


PS: Geht um autologin

— geändert am 03.09.2012, 12:20:17

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Sophia Neun
  • Forum-Beiträge: 5.778

31.08.2012, 12:42:23 via Website

Hallo Pascal,

ich habe deinen Thread mal ins Entwicklerforum verschoben, da du hier denke eher Antworten bekommst.
Desweiteren haben wir deinen Code mal etwas übersichtlicher Formatiert, also nicht wundern ;)

Viele Grüße,
Sophia

AndroidPIT-Regeln

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

31.08.2012, 13:00:49 via Website

Danke.

Pascal

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

03.09.2012, 08:42:32 via Website

Hab's gefunden die Funktion postUrl kann keine Plus.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Gelöschter Account
  • Forum-Beiträge: 694

03.09.2012, 09:28:15 via Website

Das hast Du jetzt falsch ausgedrückt.

* Ein + im Pfad (z.B.: http://www.bla.com/a+b/) ist korrekt und bleibt wie es ist.

* Ein + in den Parametern (z.B.:http://www.bla.com?a=a+b steht für "http://www.bla.com?a=a b" - war das so von Dir gewollt?

— geändert am 03.09.2012, 09:28:58

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

03.09.2012, 09:39:28 via Website

Nein ich hab jetzt eine andere Lösung per Javascript gefunden.
Vielleicht ab ich mich wirklich falsch ausgedrückt aber es funktioniert.

Thread schließen.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Gelöschter Account
  • Forum-Beiträge: 694

03.09.2012, 09:56:45 via Website

Das ist der falsche Weg. Du löst das, so habe ich es jedenfalls verstanden, in dem Du das fehlende/falsche Encodieren auf Empfängerseite korrigierst. Das wäre Gefrickel. Dann wirst Du irgendwann unweigerlich mit einem anderen Zeichen auf die Nase fallen. Das kannst Du nur durch korrektes Encodieren auf Seiten des Senders lösen.

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

03.09.2012, 11:20:42 via Website

Nein ich mache den Post per interne HTML form so brauche ich dieses Problem nicht lösen.
Die Autoanmeldung fuzt auch so, wenn man auf der Internen html ein Autosubmit bei onLoad macht.
Der Post wird trotzdem abgeschickt aber nicht durch Android sonder durch die Geladene HTML.
Code:(problem mit Formatierung!)

1WebView browser = (WebView)findViewById(R.id.webView1);
2 WebSettings ws = browser.getSettings();
3 ws.setJavaScriptEnabled(true);
4 String HTML = "<!DOCTYPE html><HTML><script>function sub(){document.getElementById(\"form1\").submit();}</script><HEAD> </head><body onLoad=\"sub()\"> <form name=\"form1\" method=\"post\" action=\"https://www.schulmensa.net/Ostfildern/Vorbesteller/Default.aspx\" onsubmit=\"javascript:return WebForm_OnSubmit();\" id=\"form1\" align=\"center\" autocomplete=\"off\" __smartNavEnabled=\"true\"> <div> <input type=\"hidden\" name=\"__EVENTTARGET\" id=\"__EVENTTARGET\" value=\"\" /> <input type=\"hidden\" name=\"__EVENTARGUMENT\" id=\"__EVENTARGUMENT\" value=\"\" /> <input type=\"hidden\" name=\"__VIEWSTATE\" id=\"__VIEWSTATE\" value="/... Langer Code im Viewstate..der dieses Plus enthielt..."/></div><div><input type=\"hidden\" name=\"__EVENTVALIDATION\" id=\"__EVENTVALIDATION\" value=\"/wEWDQLQ6qiyBgLX+uuiDwKUvNa1DwL666vYDAKnz4ybCAL81qLkDQL10cXFCgKV6YbiAQL41ocoAsWYx6EOAoS6vLgLAuvb7PsDAqya2LoDwacSvRaV8e5YZWEVpDQv2+kpsNXh8MMpUEuoBThlybg=\" /> </div> <input name=\"Login1$UserName\" type=\"hidden\" id=\"Login1_UserName\" value=\"Pascal\" class=\"EssDefaultTextEntry\" /> <input name=\"Login1$Password\" type=\"hidden\" id=\"Login1_Password\" value=\"passwd\" class=\"EssDefaultPasswordEntry\" /><input type=\"hidden\" name=\"Login1$LoginButton\" value=\"anmelden\"value=\"buttonValue\" /></body></html>";
5
6
7browser.setWebViewClient(new WebViewClient(){
8 @Override
9 public boolean shouldOverrideUrlLoading(WebView wView, String url)
10 {
11 //Toast.makeText(getApplicationContext(), url, Toast.LENGTH_LONG).show();
12 wView.loadUrl(url);
13 return true;
14 }
15});
16browser.loadData(HTML, "text/html", "utf-8");
17 }

— geändert am 03.09.2012, 11:21:04

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten