Search...

Showing posts with label HttpClient. Show all posts
Showing posts with label HttpClient. Show all posts

Tuesday, December 6, 2011

How to display the HttpResponse response on console in android

         HttpResponse response = httpclient.execute(request);


         ByteArrayOutputStream v2 = new ByteArrayOutputStream();
        response.getEntity().writeTo(v2);
        System.out.println("----Response------------------------------------");
        System.out.println(v2.toString());
        System.out.println("----------------------------------------");
     

How to send/receive JSON Objects using HttpClient in android


This tutorial is focused on creating a very simple HTTP client for Google's mobile operating system Android, which then can communicate with a web server and exchange JSON information. I won't go too much into detail, since the code is pretty much self-explaining and already has a lot of comments describing the program flow.

1) Create a new Android project


2) Add permission to access the Internet from your application to your AndroidManifest.xml

<MANIFEST>

2      

3     <USES-PERMISSION android:name="android.permission.INTERNET">

4 </USES-PERMISSION>

5 </MANIFEST>


3) Create a new (static) class called HttpClient.java
package com.devstream.http;

016 import java.io.BufferedReader;

017 import java.io.IOException;

018 import java.io.InputStream;

019 import java.io.InputStreamReader;

020 import java.util.zip.GZIPInputStream;

021 import org.apache.http.Header;

022 import org.apache.http.HttpEntity;

023 import org.apache.http.HttpResponse;

024 import org.apache.http.client.methods.HttpPost;

025 import org.apache.http.entity.StringEntity;

026 import org.apache.http.impl.client.DefaultHttpClient;

027 import org.json.JSONObject;

028 import android.util.Log;

029 public class HttpClient {

030  private static final String TAG = "HttpClient";

031  public static JSONObject SendHttpPost(String URL, JSONObject jsonObjSend) {

032   try {

033    DefaultHttpClient httpclient = new DefaultHttpClient();

034    HttpPost httpPostRequest = new HttpPost(URL);

035    StringEntity se;

036    se = new StringEntity(jsonObjSend.toString());

037    // Set HTTP parameters

038    httpPostRequest.setEntity(se);

039    httpPostRequest.setHeader("Accept", "application/json");

040    httpPostRequest.setHeader("Content-type", "application/json");

041    httpPostRequest.setHeader("Accept-Encoding", "gzip"); // only set this parameter if you would like to use gzip compression

042    long t = System.currentTimeMillis();

043    HttpResponse response = (HttpResponse) httpclient.execute(httpPostRequest);

044    Log.i(TAG, "HTTPResponse received in [" + (System.currentTimeMillis()-t) + "ms]");

045    // Get hold of the response entity (-> the data):

046    HttpEntity entity = response.getEntity();

047    if (entity != null) {

048     // Read the content stream

049     InputStream instream = entity.getContent();

050     Header contentEncoding = response.getFirstHeader("Content-Encoding");

051     if (contentEncoding != null && contentEncoding.getValue().equalsIgnoreCase("gzip")) {

052      instream = new GZIPInputStream(instream);

053     }

054     // convert content stream to a String

055     String resultString= convertStreamToString(instream);

056     instream.close();

057     resultString = resultString.substring(1,resultString.length()-1); // remove wrapping "[" and "]"

058     // Transform the String into a JSONObject

059     JSONObject jsonObjRecv = new JSONObject(resultString);

060     // Raw DEBUG output of our received JSON object:

061     Log.i(TAG,"<jsonobject>\n"+jsonObjRecv.toString()+"\n</jsonobject>");

062     return jsonObjRecv;

063    }

064   }

065   catch (Exception e)

066   {

067    // More about HTTP exception handling in another tutorial.

068    // For now we just print the stack trace.

069    e.printStackTrace();

070   }

071   return null;

072  }

073  private static String convertStreamToString(InputStream is) {

074   /*

075    * To convert the InputStream to String we use the BufferedReader.readLine()

076    * method. We iterate until the BufferedReader return null which means

077    * there's no more data to read. Each line will appended to a StringBuilder

078    * and returned as String.

079    *

080    * (c) public domain: http://senior.ceng.metu.edu.tr/2009/praeda/2009/01/11/a-simple-restful-client-at-android/

081    */

082   BufferedReader reader = new BufferedReader(new InputStreamReader(is));

083   StringBuilder sb = new StringBuilder();

084   String line = null;

085   try {

086    while ((line = reader.readLine()) != null) {

087     sb.append(line + "\n");

088    }

089   } catch (IOException e) {

090    e.printStackTrace();

091   } finally {

092    try {

093     is.close();

094    } catch (IOException e) {

095     e.printStackTrace();

096    }

097   }

098   return sb.toString();

099  }

}


4) Add the following code to your MainActivity.java


package com.devstream.http;

17 import org.json.JSONException;

18 import org.json.JSONObject;

19 import android.app.Activity;

20 import android.os.Bundle;

21 import android.util.Log;

22 public class MainActivity extends Activity {

23  private static final String TAG = "MainActivity";

24  private static final String URL = "http://www.yourdomain.com:80";

25  @Override

26  public void onCreate(Bundle savedInstanceState) {

27   super.onCreate(savedInstanceState);

28   setContentView(R.layout.main);

29   // JSON object to hold the information, which is sent to the server

30   JSONObject jsonObjSend = new JSONObject();

31   try {

32    // Add key/value pairs

33    jsonObjSend.put("key_1", "value_1");

34    jsonObjSend.put("key_2", "value_2");

35    // Add a nested JSONObject (e.g. for header information)

36    JSONObject header = new JSONObject();

37    header.put("deviceType","Android"); // Device type

38    header.put("deviceVersion","2.0"); // Device OS version

39    header.put("language", "es-es"); // Language of the Android client

40    jsonObjSend.put("header", header);

41    

42    // Output the JSON object we're sending to Logcat:

43    Log.i(TAG, jsonObjSend.toString(2));

44   } catch (JSONException e) {

45    e.printStackTrace();

46   }

47   // Send the HttpPostRequest and receive a JSONObject in return

48   JSONObject jsonObjRecv = HttpClient.SendHttpPost(URL, jsonObjSend);

49   /*

50    *  From here on do whatever you want with your JSONObject, e.g.

51    *  1) Get the value for a key: jsonObjRecv.get("key");

52    *  2) Get a nested JSONObject: jsonObjRecv.getJSONObject("key")

53    *  3) Get a nested JSONArray: jsonObjRecv.getJSONArray("key")

54    */

55  }

}





Thursday, December 1, 2011

How to send post HttpClient request in android


                List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();

                nameValuePairs.add(new BasicNameValuePair("country","us"));
                nameValuePairs.add(new BasicNameValuePair("city","nyc"));

                HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("your_url");
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);

How to send HttpClient zip/compress request in android


 public static InputStream getGzipStream(String url) throws Exception {

HttpClient httpclient = new DefaultHttpClient();
HttpUriRequest request = new HttpGet(url);
request.addHeader("Accept-Encoding", "gzip");

HttpResponse response = httpclient.execute(request);

if (response.getStatusLine().getStatusCode() != HttpStatus.SC_OK) {
return null;
}

InputStream instream = response.getEntity().getContent();
Header contentEncoding = response.getFirstHeader("Content-Encoding");
if (contentEncoding != null
&& contentEncoding.getValue().equalsIgnoreCase("gzip")) {
instream = new GZIPInputStream(instream);
}

return instream;

}