Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.anuja.httpget;
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.InputStreamReader;
- 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.impl.client.DefaultHttpClient;
- import android.app.Activity;
- import android.os.AsyncTask;
- import android.os.Bundle;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- import android.widget.EditText;
- import android.widget.Toast;
- public class MyHttpGetProjectActivity extends Activity implements OnClickListener {
- private EditText usernameEditText;
- private EditText passwordEditText;
- private Button sendGetReqButton;
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- usernameEditText = (EditText) findViewById(R.id.main_username_editText);
- passwordEditText = (EditText) findViewById(R.id.main_password_editText);
- sendGetReqButton = (Button) findViewById(R.id.main_sendGetReq_button);
- sendGetReqButton.setOnClickListener(this);
- }
- @Override
- public void onClick(View v) {
- if(v.getId() == R.id.main_sendGetReq_button){
- // Get the values given in EditText fields
- String givenUsername = usernameEditText.getText().toString();
- String givenPassword = passwordEditText.getText().toString();
- System.out.println("Givennames is :" + givenUsername + " Given password is :" + givenPassword);
- // Pass those values to connectWithHttpGet() method
- connectWithHttpGet(givenUsername, givenPassword);
- }
- }
- private void connectWithHttpGet(String givenUsername, String givenPassword) {
- // Connect with a server is a time consuming process.
- //Therefore we use AsyncTask to handle it
- // From the three generic types;
- //First type relate with the argument send in execute()
- //Second type relate with onProgressUpdate method which I haven't use in this code
- //Third type relate with the return type of the doInBackground method, which also the input type of the onPostExecute method
- class HttpGetAsyncTask extends AsyncTask<String, Void, String>{
- @Override
- protected String doInBackground(String... params) {
- // As you can see, doInBackground has taken an Array of Strings as the argument
- //We need to specifically get the givenUsername and givenPassword
- String paramUsername = params[0];
- String paramPassword = params[1];
- System.out.println("paramUsername" + paramUsername + " paramPassword is :" + paramPassword);
- // Create an intermediate to connect with the Internet
- HttpClient httpClient = new DefaultHttpClient();
- // Sending a GET request to the web page that we want
- // Because of we are sending a GET request, we have to pass the values through the URL
- HttpGet httpGet = new HttpGet("http://www.nirmana.lk/hec/android/getLogin.php?paramUsername=" + paramUsername + "¶mPassword=" + paramPassword);
- try {
- // execute(); executes a request using the default context.
- // Then we assign the execution result to HttpResponse
- HttpResponse httpResponse = httpClient.execute(httpGet);
- System.out.println("httpResponse // getEntity() ; obtains the message entity of this response
- // getContent() ; creates a new InputStream object of the entity.
- // Now we need a readable source to read the byte stream that comes as the httpResponse
- InputStream inputStream = httpResponse.getEntity().getContent();
- // We have a byte stream. Next step is to convert it to a Character stream
- InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
- // Then we have to wraps the existing reader (InputStreamReader) and buffer the input
- BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
- // InputStreamReader contains a buffer of bytes read from the source stream and converts these into characters as needed.
- //The buffer size is 8K
- //Therefore we need a mechanism to append the separately coming chunks in to one String element
- // We have to use a class that can handle modifiable sequence of characters for use in creating String
- StringBuilder stringBuilder = new StringBuilder();
- String bufferedStrChunk = null;
- // There may be so many buffered chunks. We have to go through each and every chunk of characters
- //and assign a each chunk to bufferedStrChunk String variable
- //and append that value one by one to the stringBuilder
- while((bufferedStrChunk = bufferedReader.readLine()) != null){
- stringBuilder.append(bufferedStrChunk);
- }
- // Now we have the whole response as a String value.
- //We return that value then the onPostExecute() can handle the content
- System.out.println("Returninge of doInBackground :" + stringBuilder.toString());
- // If the Username and Password match, it will return "working" as response
- // If the Username or Password wrong, it will return "invalid" as response
- return stringBuilder.toString();
- } catch (ClientProtocolException cpe) {
- System.out.println("Exceptionrates caz of httpResponse :" + cpe);
- cpe.printStackTrace();
- } catch (IOException ioe) {
- System.out.println("Secondption generates caz of httpResponse :" + ioe);
- ioe.printStackTrace();
- }
- return null;
- }
- // Argument comes for this method according to the return type of the doInBackground() and
- //it is the third generic type of the AsyncTask
- @Override
- protected void onPostExecute(String result) {
- super.onPostExecute(result);
- if(result.equals("working")){
- Toast.makeText(getApplicationContext(), "HTTP GET is working...", Toast.LENGTH_LONG).show();
- }else{
- Toast.makeText(getApplicationContext(), "Invalid...", Toast.LENGTH_LONG).show();
- }
- }
- }
- // Initialize the AsyncTask class
- HttpGetAsyncTask httpGetAsyncTask = new HttpGetAsyncTask();
- // Parameter we pass in the execute() method is relate to the first generic type of the AsyncTask
- // We are passing the connectWithHttpGet() method arguments to that
- httpGetAsyncTask.execute(givenUsername, givenPassword);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement