Capture the Android's browser HTTP petitions

by psaltamontes » Fri, 19 Jun 2009 02:43:42 GMT


Sponsored Links
 Hi,

I need capture the Android's browser HTTP petitions.

The idea is to use a service that listen a localport (7777). This
service modify the HTTP petition and sends this petition to Internet.

In PC to capture the HTTP petitions is easy, I change the browser
configuration, I put localhost and a port (7777) and it's works. But,
in Android I don't know how to change the browser configuration.

I think that in "/data/data/com.android.browser" there are the
configuration files of the browser, but I don't know if I can
configure the proxy browser.

Any idea?

Thanks.
--~--~---------~--~----~------------~-------~--~----~



Capture the Android's browser HTTP petitions

by psaltamontes » Fri, 19 Jun 2009 22:58:08 GMT


 Yes, I want to say request :), sorry , I need improve my English.

I don't want my application modify the settings of the browser, the
idea is that the user configure the proxy of the browser and install
my application. This application is a service that listen the HTTP
requests and send to the Internet.

I want capture the HTTP request and modify the headers because, in the
header, I put a number to identify the client that connect to my
webserver, doing this, the user don't have to put an user name and a
password. I have written the code to do this, in PC works, but in
Android I don't know how to get this behaviour.

How can I do?



--~--~---------~--~----~------------~-------~--~----~


Sponsored Links


Capture the Android's browser HTTP petitions

by psaltamontes » Fri, 19 Jun 2009 23:34:52 GMT


 Do you know/think if this option will be in the future?

Now, I'm trying to do something with a webview and webviewclient. But
I don't know how to send a "RAW HTTP request" using these classes.

I can send/receive RAW HTTP with sockets, but I don't know how to link
these sockets with the webview.

Any idea?

Thanks.



--~--~---------~--~----~------------~-------~--~----~



Capture the Android's browser HTTP petitions

by psaltamontes » Sat, 20 Jun 2009 00:44:30 GMT


 Here,




Capture the Android's browser HTTP petitions

by Alexey Krasnoriadtsev » Sun, 21 Jun 2009 00:40:00 GMT


 You can create your own Browser application, that will allow proxy
configuration. You can also take original Browser app as the base
(it's available in git).

Those users who need proxy will be able to install your browser
application and use it.




> 



Capture the Android's browser HTTP petitions

by Hamy » Sun, 21 Jun 2009 02:18:54 GMT


 Sorry, realized right after I sent that that the imports might be
useful.

H

import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ByteArrayEntity;
import org.apache.http.impl.client.DefaultHttpClient;




--~--~---------~--~----~------------~-------~--~----~



Capture the Android's browser HTTP petitions

by Hamy » Sun, 21 Jun 2009 02:28:34 GMT


 ot sure if this will help, but I hope so. This is code I found in an
application my research group is working on, and it is under apache v2
license.

Thanks,
Hamy


Log.v(LOG_LABEL, LOG_MSG_PREFIX + "Entering
HTTPPoster.doAccidentPost");
final HttpClient c = new DefaultHttpClient();
final HttpPost post = new HttpPost(SERVER + PATH);
post.addHeader("Content-Type",
"application/x-www-form-urlencoded");

StringBuffer params = new StringBuffer();

// Create the parameter string
params.append("type=accident&user="+androidid+"&time="+ timeStr
+"&speed="+speedStr+"&dec="+decStr+"&lat="
+ lat + "&lon="+lon);


// Add the parameters
Log
.v(LOG_LABEL, LOG_MSG_PREFIX + "Created
parameter string: "
+ params);
post.setEntity(new
ByteArrayEntity(params.toString().getBytes()));

// Do it
Log.i(LOG_LABEL, LOG_MSG_PREFIX + "Executing post to " + SERVER
+
PATH);
Log.d(LOG_LABEL, LOG_MSG_PREFIX + "Spawning thread for HTTP
post");
new Thread(new Runnable() {

public void run() {
HttpResponse resp = null;
try {
resp = c.execute(post);
ByteArrayOutputStream bao = new
ByteArrayOutputStream();
resp.getEntity().writeTo(bao);
Log.d(LOG_LABEL, LOG_MSG_PREFIX +
"Response from server: "
+ new
String(bao.toByteArray()));
} catch (ClientProtocolException e) {
Log.e(LOG_LABEL, LOG_MSG_PREFIX
+
"ClientProtocolException executing post: "
+ e.getMessage());
} catch (IOException e) {
Log.e(LOG_LABEL, LOG_MSG_PREFIX
+ "IOException writing
to ByteArrayOutputStream: "
+ e.getMessage());
} catch (Exception e) {
Log.e(LOG_LABEL, LOG_MSG_PREFIX
+ "Other Exception of
type:" + e.getClass());
Log.e(LOG_LABEL, LOG_MSG_PREFIX + "The
message is: "
+ e.getMessage());
}

if (resp != null &&
resp.getStatusLine().getStatusCode() == 200) {
okRun.run();
}
}

}).start();
Log.d(LOG_LABEL, LOG_MSG_PREFIX + &quo



Capture the Android's browser HTTP petitions

by psaltamontes » Mon, 22 Jun 2009 04:02:35 GMT


 @Alexey :

What's the meaning of "git"?

@ Hamy :

 I needed this line :) ! -> resp.getEntity().writeTo(bao);

I'm sure that the code that you are put help me a lot.

@ Raphael :

I used Google before put my question here.

If you search this --> 
 http://www.google.com/search?q=set +proxy+for+android+web+browser

The information that Google found is about change the "general/main"
proxy, I only want redirect the browser's traffic.

Thank you people.






--~--~---------~--~----~------------~-------~--~----~



Capture the Android's browser HTTP petitions

by Alexey Krasnoriadtsev » Tue, 23 Jun 2009 01:17:29 GMT


 GIT is the repository where all android code is.
for Browser, here is the specific link:
 http://android.git.kernel.org/?p=platform/packages/apps/Browser.git ;a=summary







--~--~---------~--~----~------------~-------~--~----~



Capture the Android's browser HTTP petitions

by psaltamontes » Tue, 23 Jun 2009 03:49:55 GMT


 hen I think that I'm near to do that I want, there is something that
not works :(.

I have achieved send my modified HTTP request! Well, it works, but
only the first time :).

I have used the WebView, DefaultHttpClient, HttpGet and HttpResponse
classes to do it.

WebView : to see the webpages.
DefaultHttpClient : to send the request.
HttpGet : to do the request and add my header (.addHeader())
HttpResponse : to store the response.

When I have the web server response I send to the WebView, I use
loadDataWithBaseURL.

WebView.loadDataWithBaseURL : to load the response, and here is my
problem. If the page has images, for example, the method sends HTTP
GET request. This is OK, but the problem is that the petitions don't
have my header and the server don't accept.

Is possible to modify the petitions that loadDataWithBaseURL does?

@ Alexey :

I have download the browser, this code is complicated for me. I don't
know where to begin. But I will look calmly.


On 22 jun, 19:17, Alexey Krasnoriadtsev <ale...@agilefusion.com>
wrote:
--~--~---------~--~----~------------~-------~--~----~



Capture the Android's browser HTTP petitions

by psaltamontes » Mon, 29 Jun 2009 23:19:06 GMT


  found the solution to capture the requests, I have to put in the
baseUrl parameter the address of the android proxy.

webview.loadDataWithBaseURL(String baseUrl, String data, String
mimeType, String encoding, String failUrl)

For example, if the android proxy service is listening the port 8282,
the baseUrl parameter will be 10.0.2.2:8282. (10.0.2.2 : is the
emulator localhost address). loadDataWithBaseURL sends the requests to
this address and then my proxy can process the request.


On 22 jun, 21:49, psaltamontes <mcg2...@gmail.com> wrote:
--~--~---------~--~----~------------~-------~--~----~



Other Threads

1. NexDESIRE_v1.0_REMI

Ada yg mau mencoba, katanya rom desire yg di ported ke nexus ini bisa
jalanin apps2sd dan enable swap.
Info selengkapnya di http://forum.xda-developers.com/showthread.php?t=637325

-- 
Regards,
Ronald [at] my godlydroid

-- 
"Indonesian Android Community [id-android]" 

2. Hello Andoid works then ... Not able to run android project

Thanks for help.

Built Hello Android app on Galileo - it ran fine.
Next day - unable to run android apps.
ADT and DDMS show installed.
PATH is set to SDK.

There is no option to create a new android project or run android apps
now.  No idea what happened. I changed nothing I know of.

So I tried reinstalling everything...No luck.

Anyone know what to check to find out why I can't build or run android
apps anymore?
Shouldn't the Eclipse Installation Details tell me something?

Thanks again,

Zack.

-- 

3. A couple of beginner questions

4. Camera on HTC Hero: Calling camera.autoFocus(...) gives a IOException .. ?

5. Cya 5.0.3.1

6. Can I set ImageView android:src in code?

7. Android SMS Application Issue..!!!!(Port Number)