在默認情況下,Fiddler不能監聽Java HttpURLConnection請求。究其原因,Java的網絡通信協議棧可能瀏覽器的通信協議棧略有區別,Fiddler監聽Http請求的原理是在應用程序和操作系統網絡通信層之間搭建了一個代理服務器,而Java的HttpURLConnection應該是繞過了這個代理服務器,因此Fiddler無法監聽到Java HttpURLConnection請求。
解決Fiddler不能監聽Java HttpURLConnection請求的基本思路就是設置代理服務器。
Fiddler官網給出的解決辦法(見http://www.fiddler2.com/fiddler/help/hookup.asp#Q-JavaTraffic)是設置jvm參數,如
jre -DproxySet=true -DproxyHost=127.0.0.1 -DproxyPort=8888 MyApp
stackoverflow上的牛人們也給出了在Java代碼中設置代理服務器的方法(見http://stackoverflow.com/questions/8549749/how-to-capture-https-with-fiddler-in-java),如
System.setProperty("http.proxyHost", "localhost");
System.setProperty("http.proxyPort", "8888");
System.setProperty("https.proxyHost", "localhost");
System.setProperty("https.proxyPort", "8888");
當然最好還是希望Fiddler自身能過增加監聽Java HttpURLConnection請求的能力。