I am new to android and I am trying to read data from a server. I use a util and call that util like this
private void ParseSource(String Url){
   String source = new Cls_SourceGrabber().grabSource(Url);
} 
But I am getting a android.os.networkonmainthreadexception. How can I reduce that?
My SourceGrabber util:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URI;
import java.net.URISyntaxException;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.conn.ConnectTimeoutException;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
public class Cls_SourceGrabber {
    private HttpGet mRequest;
    private HttpClient mClient;
    private BufferedReader mReader;
    private StringBuffer mBuffer;
    private String mNewLine;
    public Cls_SourceGrabber() {
        mRequest = new HttpGet();
        InitializeClient();
        mReader = null;
        mBuffer = new StringBuffer(10000);
        mNewLine = System.getProperty("line.separator");
    }
    private void InitializeClient() {
        if (mClient == null || mClient.getConnectionManager() == null) {
            HttpParams httpParameters = new BasicHttpParams();
            HttpConnectionParams.setConnectionTimeout(httpParameters, 4500);
            HttpConnectionParams.setSoTimeout(httpParameters, 10000);
            // HttpConnectionParams.setTcpNoDelay(httpParameters, true);
            mClient = new DefaultHttpClient(httpParameters);
        }
    }
    /*
     *Grab the full source
     */
    public String grabSource(String url) {
        mBuffer.setLength(0);
        InitializeClient();
        String source = "";
        try {
            mRequest.setURI(new URI(url));
            HttpResponse response = mClient.execute(mRequest);
            mReader = new BufferedReader(new InputStreamReader(response
                    .getEntity().getContent()));
            String line = "";
            while ((line = mReader.readLine()) != null) {
                mBuffer.append(line);
                mBuffer.append(mNewLine);
                source = mBuffer.toString();
                if (Thread.interrupted()) {
                    break;
                }
            }
        } catch (ConnectTimeoutException e) {
            source = "Connection Timed Out.";
        } catch (java.net.UnknownHostException e) {
            source = "No Internet Connection available!";
        } catch (java.lang.ArrayIndexOutOfBoundsException e) {
            source = "Site Parsing Exception.";
        } catch (ClientProtocolException e) {
            source = "Protocol Exception.";
        } catch (IOException e) {
            source = "Server not responding.";
        } catch (URISyntaxException e) {
            source = "Wrong URL!";
        } catch (Exception e) {
            source = "Exception - " + e.toString() + " - "
                    + e.getMessage();
            e.printStackTrace();
        } finally {
            closeReader();
        }
        return source;
    }
}
