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. 2 Android GPS development issues

hey guys.
my first problem i saw some others on the web that had the same
problem i just cant find the related threds again for some reason.

when i try to use "Fake gps" on my android application, the first set
of coordinates work fine. and call the
        @Override       public void onLocationChanged(Location location)
function.

my problem is when i try to enter more locations. it just wont work
(unless i restart the emulator or re-run the program.
i try to "geo fix" more locations... but the onLocationChanged
functions doesnt "go off" as it should.

any idias on how i should address this problem. is there somthing i
need to reset after each location change?

-------------------------------------------------------------------------------------------------------------------------------------------------------------
for the secound problem:
the longtitude and latitude i enter in telnet for the GPS, is not
exactly the same as the ones recived in the emulator.
this is funny becouse i dont do anything to thous values.
for a real example:
i enter: geo fix -73.995002746582 40.7341995239258
in debug mode the long/lat recived in the onLocationChanged function
is:
-73.99550193333333 40.74000013333333
any idias?.

thank you
Or wolfstein.

2. What is the format of RTSP streaming response in Android ?

Hi all,
I am developing a client adapter to receive the android request and
then send back the response for Android.
The RTSP DESCRIBE request from Android is:
DESCRIBE rtsp://ip:5544/ RTSP/1.0
CSeq: 1
User-Agent: PVPlayer CORE/6.506.4.1 OpenCORE/2.02 (Linux;Android 2.2)
Accept: application/sdp
Accept-Encoding:

May I ask what is the format of response Android can accept? Can you
give me some sample??

Thanks

-- 

3. Problem stripping Log calls with ProGuard

4. Location Change Triggering for Network but not for GPS

5. Anything wrong with this view?

6. bionic getprotoname issue?

7. Animation with only one view