- Forum-Beiträge: 71
04.08.2014, 04:41:12 via Website
04.08.2014 04:41:12 via Website
Hallo,
ich muss in meiner App in verschiedenen Activitys immer wieder auf die gleiche HTTP Schnittelle zugreifen.
Im Moment mache ich es so, das ich in jede Activity einen Klasse eintrage und im onPostExecute dann darauf je nach Aktivity reagiere, hier ein Beispiel zum Login.
public class getPost extends AsyncTask<List<NameValuePair>, Void, String> {
String line;
String returnPost = "";
InputStream inputStream;
@Override
protected String doInBackground(List<NameValuePair>... params){
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://resper.de/skfband.php");
try {
httppost.setEntity(new UrlEncodedFormEntity(params[0]));
HttpResponse loginResult = httpclient.execute(httppost);
inputStream = loginResult.getEntity().getContent();
BufferedReader bufferedReader = new BufferedReader( new InputStreamReader(inputStream));
while((line = bufferedReader.readLine()) != null){
returnPost += line;
}
inputStream.close();
} catch (ClientProtocolException e) {
Log.d("Debug","Debug");
} catch (IOException e) {
Log.d("Debug","Debug");
}
return returnPost;
}
protected void onPostExecute(String result) {
// Ergebnis auswerten und dementsprechend reagieren
}
}
Ist es möglich eine eigene Klasse zu erstellen, die ich dann mit denn Parameter übergebe und ich als return den den String bekomme?
z.B.:
GetPost getResult = new GetPost ();
String resultString = getResult.getPostPairs(pairs);
Ich habe es so probiert, aber da bekomme ich den android.os.NetworkOnMainThreadException Fehler, da ich das ganze ja als AsyncTask ausführen muss.
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.List;
public class GetPost {
public GetPost() {
}
public String getPostPairs(List<NameValuePair> pairs) {
String result = null;
try {
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost("http://resper.de/skfband.php");
httpPost.setEntity(new UrlEncodedFormEntity(pairs));
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
result = EntityUtils.toString(httpEntity);
}catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
}
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.