如何在Android中使用简单的HTTP客户端?

如何使用AndroidHttpClient作为HTTP客户端连接到远程服务器? 我无法在文档或互联网上find好的例子。

 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(); } 

你可以这样使用:

 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; } 

你可以使用这个代码:

 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()); }