Question

I'm trying to get the HttpPost result from server and converting it into byte array and get the the specific bytes from byte[]. For now I'm using this code and it's working. I need to change it to what I want to do. Here is the code :

public class UserLogin extends Activity {

    Button cancel,login;
    HttpClient httpclient;
    HttpPost httppost;
    ArrayList<NameValuePair> postParameters;
    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.login);
        httpclient = new DefaultHttpClient();
        httppost = new HttpPost("http://www.rpc.test.com");

        postParameters = new ArrayList<NameValuePair>();
        //postParameters.add(new BasicNameValuePair("new_auth_data","1"));
        postParameters.add(new BasicNameValuePair("username_hash", "c34a6cf6bff9f6b61e96fdf4bf360157d522a17c"));
        postParameters.add(new BasicNameValuePair("password_hash", "56dc55f0062cf21797637b0f8652293023f2ef22"));

        cancel = (Button) findViewById(R.id.cancel_login_btn);
        cancel.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                finish();
            }
        });

        login = (Button) findViewById(R.id.login_btn);
        login.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {

                try {
                    httppost.setEntity(new UrlEncodedFormEntity(postParameters));

                    HttpResponse response = httpclient.execute(httppost);
                    Log.d("Login", "Response " + response.getEntity());

                    String responseBody = EntityUtils.toString(response.getEntity());
                    byte[] b = responseBody.getBytes();
                    // here




                    new AlertDialog.Builder( UserLogin.this )
                    .setTitle( "Warning" )
                    .setMessage( responseBody )
                    .setPositiveButton( "Ok", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {
                            Log.d("AlertDialog", "Positive");
                        }
                    })
                    .show();

                } catch (Exception e) {
                    Log.d("ERROR"," Error lol - "+e);
                }

            }
        });
    }
}

As a result of this HttpPost I'm getting a string which I need to convert to byte as I did and get the specific bytes from it..Like to start from 15 element to 25 or something like this. Any suggestions how can I do that?

Thanks in advance for all suggestions and help.

Was it helpful?

Solution

extracting a subarray from an array is done with arrayCopy http://developer.android.com/reference/java/lang/System.html#arraycopy%28java.lang.Object,%20int,%20java.lang.Object,%20int,%20int%29

for elements 15 to 25:

byte[] subarray = new byte[25-15];
System.arrayCopy(b, 15, subarray, 0, subarray.length);

OTHER TIPS

Use EntityUtils.toByteArray() method instead:

byte[] responseValueArray = EntityUtils.toByteArray(response.getEntity());

And to get first 5 bits of array, use Arrays.copyOf() method:

byte[] fiveLengthArray = Arrays.copyOf(responseValueArray, 5);

Use

execute(HttpUriRequest request, ResponseHandler<? extends T> responseHandler)

instead of

execute(HttpUriRequest request)

with custom responseHandler. This way you can handle input stream directly and do anything you want with it. Using EntityUtils is GC ineficient I suppose. If you care about this kind of stuff.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top