Wie verwende ich den Simple HTTP Client in Android? [geschlossen]
75
Wie verwende ich den AndroidHttpClientals HTTP-Client, um eine Verbindung zu einem Remote-Server herzustellen? Ich konnte weder in der Dokumentation noch im Internet gute Beispiele finden.
Dies ist eigentlich eine nützliche Frage. Es gibt nicht viele Beispiele für die Verwendung von AndroidHttpClient. Vielleicht sollte die Frage spezifischer sein.
Dave Jensen
3
Ich habe dies aktualisiert, um es zu einer echten Frage zu machen. Bitte öffnen Sie es erneut, da dies, wie Sie sehen, für viele Menschen eine nützliche Frage war.
Dave Jensen
Werden wir das wieder öffnen oder was?
Dave Jensen
1
Warum? Das macht für mich keinen Sinn. Manchmal verwirrt mich SO völlig und frustriert mich.
Dave Jensen
2
Ich erreichte hier durch googeln android http client Beispiel . Es scheint, dass die Fragen des überdurchschnittlichen Programmierers real sind.
Habeeb Perwad
Antworten:
97
publicstaticvoidconnect(String url)
{
HttpClient httpclient = new DefaultHttpClient();
// Prepare a request object
HttpGet httpget = new HttpGet(url);
// Execute the request
HttpResponse response;
try {
response = httpclient.execute(httpget);
// Examine the response status
Log.i("Praeda",response.getStatusLine().toString());
// Get hold of the response entity
HttpEntity entity = response.getEntity();
// If the response does not enclose an entity, there is no need// to worry about connection releaseif (entity != null) {
// A Simple JSON Response Read
InputStream instream = entity.getContent();
String result= convertStreamToString(instream);
// now you have the string representation of the HTML request
instream.close();
}
} catch (Exception e) {}
}
privatestaticStringconvertStreamToString(InputStream is) {
/*
* To convert the InputStream to String we use the BufferedReader.readLine()
* method. We iterate until the BufferedReader return null which means
* there's no more data to read. Each line will appended to a StringBuilder
* and returned as String.
*/
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();
String line = null;
try {
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return sb.toString();
}
Willkommen bei Stack Overflow! Vielen Dank für Ihre Antwort! Bitte lesen Sie die FAQ zur Eigenwerbung sorgfältig durch. Beachten Sie auch , dass Sie jedes Mal, wenn Sie auf Ihre eigene Website / Ihr eigenes Produkt verlinken, einen Haftungsausschluss veröffentlichen müssen.
Antworten:
public static void connect(String url) { HttpClient httpclient = new DefaultHttpClient(); // Prepare a request object HttpGet httpget = new HttpGet(url); // Execute the request HttpResponse response; try { response = httpclient.execute(httpget); // Examine the response status Log.i("Praeda",response.getStatusLine().toString()); // Get hold of the response entity HttpEntity entity = response.getEntity(); // If the response does not enclose an entity, there is no need // to worry about connection release if (entity != null) { // A Simple JSON Response Read InputStream instream = entity.getContent(); String result= convertStreamToString(instream); // now you have the string representation of the HTML request instream.close(); } } catch (Exception e) {} } private static String convertStreamToString(InputStream is) { /* * To convert the InputStream to String we use the BufferedReader.readLine() * method. We iterate until the BufferedReader return null which means * there's no more data to read. Each line will appended to a StringBuilder * and returned as String. */ BufferedReader reader = new BufferedReader(new InputStreamReader(is)); StringBuilder sb = new StringBuilder(); String line = null; try { while ((line = reader.readLine()) != null) { sb.append(line + "\n"); } } catch (IOException e) { e.printStackTrace(); } finally { try { is.close(); } catch (IOException e) { e.printStackTrace(); } } return sb.toString(); }
quelle
NetworkOnMainThreadException
wenn Sie dies ohne Verwendung von AsyncTask versuchen .Sie können wie folgt verwenden:
public static String executeHttpPost1(String url, HashMap<String, String> postParameters) throws UnsupportedEncodingException { // TODO Auto-generated method stub HttpClient client = getNewHttpClient(); try{ request = new HttpPost(url); } catch(Exception e){ e.printStackTrace(); } if(postParameters!=null && postParameters.isEmpty()==false){ List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(postParameters.size()); String k, v; Iterator<String> itKeys = postParameters.keySet().iterator(); while (itKeys.hasNext()) { k = itKeys.next(); v = postParameters.get(k); nameValuePairs.add(new BasicNameValuePair(k, v)); } UrlEncodedFormEntity urlEntity = new UrlEncodedFormEntity(nameValuePairs); request.setEntity(urlEntity); } try { Response = client.execute(request,localContext); HttpEntity entity = Response.getEntity(); int statusCode = Response.getStatusLine().getStatusCode(); Log.i(TAG, ""+statusCode); Log.i(TAG, "------------------------------------------------"); try{ InputStream in = (InputStream) entity.getContent(); //Header contentEncoding = Response.getFirstHeader("Content-Encoding"); /*if (contentEncoding != null && contentEncoding.getValue().equalsIgnoreCase("gzip")) { in = new GZIPInputStream(in); }*/ BufferedReader reader = new BufferedReader(new InputStreamReader(in)); StringBuilder str = new StringBuilder(); String line = null; while((line = reader.readLine()) != null){ str.append(line + "\n"); } in.close(); response = str.toString(); Log.i(TAG, "response"+response); } catch(IllegalStateException exc){ exc.printStackTrace(); } } catch(Exception e){ Log.e("log_tag", "Error in http connection "+response); } finally { } return response; }
quelle
Sie können diesen Code verwenden:
int count; try { URL url = new URL(f_url[0]); URLConnection conection = url.openConnection(); conection.setConnectTimeout(TIME_OUT); conection.connect(); // Getting file length int lenghtOfFile = conection.getContentLength(); // Create a Input stream to read file - with 8k buffer InputStream input = new BufferedInputStream(url.openStream(), 8192); // Output stream to write file OutputStream output = new FileOutputStream( "/sdcard/9androidnet.jpg"); byte data[] = new byte[1024]; long total = 0; while ((count = input.read(data)) != -1) { total += count; // publishing the progress.... // After this onProgressUpdate will be called publishProgress("" + (int) ((total * 100) / lenghtOfFile)); // writing data to file output.write(data, 0, count); } // flushing output output.flush(); // closing streams output.close(); input.close(); } catch (SocketTimeoutException e) { connectionTimeout=true; } catch (Exception e) { Log.e("Error: ", e.getMessage()); }
quelle