How do I use the Simple HTTP client in Android?

AndroidHttp

Android Problem Overview


How do I use the AndroidHttpClient as an HTTP client to connect to a remote server? I have not been able to find good examples in the documentation nor on the internet.

Android Solutions


Solution 1 - Android

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

Solution 2 - Android

You can use like this:

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


	

Solution 3 - Android

You can use this code:

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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionuser538626View Question on Stackoverflow
Solution 1 - AndroidCristianView Answer on Stackoverflow
Solution 2 - AndroidnikkiView Answer on Stackoverflow
Solution 3 - Android9androidView Answer on Stackoverflow