In Eclipse there are two places that I've attempted to configure so that Fiddler can intercept the HTTP/HTTPS requests that I'm sending out:
Windows > Preference > General > Network Connections
- I've tried Native/Direct/Manual-DproxySet=true -DproxyHost=127.0.0.1 -DproxyPort=8888
EDIT: I've tried the new properties suggested by rgerganov as well.
I haven't touched any "network" related settings in Fiddler and I've set it to monitor all processes.
I tried with Wireshark and I was able to intercept the requests with no modifications to Eclipse but information presented in Wireshark is too in-depth and I don't need most of the details provided by Wireshark.
EDIT: Here's the sample code which I'm trying:
public static void doPOST() {
String post_url = "https://lookup.mxtelecom.com/USLookup";
HttpParams params = new BasicHttpParams();
HttpProtocolParams.setVersion( params, HttpVersion.HTTP_1_1 );
HttpProtocolParams.setContentCharset( params, "UTF-8" );
HttpProtocolParams.setUseExpectContinue( params, true );
SchemeRegistry supportedSchemes = new SchemeRegistry();
supportedSchemes.register( new Scheme( "https", SSLSocketFactory.getSocketFactory(), 443 ) );
supportedSchemes.register( new Scheme( "http", PlainSocketFactory.getSocketFactory(), 80 ) );
ClientConnectionManager ccm = new ThreadSafeClientConnManager( params, supportedSchemes );
HttpClient m_Client = new DefaultHttpClient( ccm, params );
HttpPost httpPost = new HttpPost( post_url );
List<NameValuePair> postParameters = new ArrayList<NameValuePair>();
postParameters.add( new BasicNameValuePair( "something", "useful" ) );
ResponseHandler<String> responseHandler = new ResponseHandler<String>() {
@Override
public String handleResponse( HttpResponse response ) throws ClientProtocolException, IOException {
if ( response.getEntity() != null ) {
return EntityUtils.toString( response.getEntity() );
}
return null;
}
};
try {
UrlEncodedFormEntity entity = new UrlEncodedFormEntity( postParameters, "UTF-8" );
httpPost.setEntity( entity );
results = m_Client.execute( httpPost, responseHandler );
} catch ( ClientProtocolException e ) {
e.printStackTrace();
} catch ( IOException e ) {
e.printStackTrace();
}
}
Eclipse Build id: 20100218-1602 // 3.5.2.R35x
Fiddler2 v2.3.2.6
jdk1.6.0_21
Please let me know if you need any other information.
HttpClient
needs to be made aware of the proxy information. Several approaches can be used:
See 2.7 in HTTP Component's documentation:
"Connect to the target host via a proxy is by setting the default proxy parameter"
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpHost proxy = new HttpHost("127.0.0.1", 8888);
httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);
Using "the standard JRE proxy selector to obtain proxy information"
DefaultHttpClient httpclient = new DefaultHttpClient();
ProxySelectorRoutePlanner routePlanner = new ProxySelectorRoutePlanner(
httpclient.getConnectionManager().getSchemeRegistry(), ProxySelector.getDefault());
httpclient.setRoutePlanner(routePlanner);
and then adding the following as VM arguments:
-Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=8888 -Dhttps.proxyHost=127.0.0.1 -Dhttps.proxyPort=8888
Custom RoutePlanner
implementation (I did not explore this option)