Hey ,
da ich noch ein ziemlicher Android Anfänger bin stehe ich mal wieder vor einem Problem.
Und zwar bastel ich gerade an einem Login auf einer Website. Ich wollte gerne, dass die APP sich automatisch auf dieser Seite einloggt. Ich habe jetzt mal ein wenig im Internet gesucht und auch was gefunden, nur es funktioniert noch nicht richtig.
Zu der Seite: Ich muss mich via Post Methode dort einloggen.
HTML
<form>action="index.php" method="POST">
<table>
<tr>
<th class="topLine">Benutzername:</th>
<td class="tbrom"><input type="text" name="id" maxlength="16" size="20"/></td>
</tr>
<tr>
<th class="topLine">Passwort:</th>
<td class="tbrom"><input type="password" name="password" maxlength="16" size="20"/></td>
</tr>
<tr>
<td class="topLine" style="text-align:center;" colspan="2"><input type="submit" name="submit" value="login"/></td>
</tr>
</table>
</form>
Alles anzeigen
Ich habe es jetzt schonmal versucht nur bekomme ich immer: android.os.NetworkOnMainThreadException
So jetzt habe ich gelesen, dass ich um den Fehler zu umgehen ein Asynctask benutzen muss. Nur weiß ich jetzt nicht genau, wie ich die beiden Sachen kombiniere
Hier mal meine Post Methode:
Code
public void postData() {
// Create a new HttpClient and Post Header
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("https://example.com/");
try {
// Add your data
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("userid", "idexample"));
nameValuePairs.add(new BasicNameValuePair("userpass", "passexample"));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
} catch (IOException e) {
// TODO Auto-generated catch block
}
}
Alles anzeigen
und hier mein Asynctask.
Java
final Context context = this;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
private class LoadWebPageASYNC extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... urls) {
WebView webView = (WebView) findViewById(R.id.webView);
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl(urls[0]);
// Create a new HttpClient and Post Header
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("www.example.com");
try {
// Add your data
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("userid", "idexample"));
nameValuePairs.add(new BasicNameValuePair("userpass", "passexample"));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
// Execute HTTP Post Request
HttpResponse response = httpclient.execute(httppost);
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
} catch (IOException e) {
// TODO Auto-generated catch block
}
return null;
}
@Override
protected void onPostExecute(String result) {
}
}
public void readWebpage(View view) {
LoadWebPageASYNC task = new LoadWebPageASYNC();
task.execute(new String[] { "http://www.example.com" });
}
Alles anzeigen
Gruß
Evoh