我們使用Java的RestTemplate或者Apache的HTTPClient編程的時候,經常遇到需要跟蹤Java
代碼發送的HTTP請求明細的情況。和javascript代碼在瀏覽器里發送請求可以通過Chrome開發者工具方便地跟蹤一樣,對於Java代碼發送的網絡請求,我們也可以使用工具Fiddler來監控。
打開Fiddler,在connections面板里找到Fiddler監聽的端口號8888:
如果是使用Apache的HTTPClient進行網絡請求發送,代碼如下:
使用HttpHost設置請求代理:
private static void downloadCommerce(){
HttpHost proxy = new HttpHost("localhost", 8888, "http");
RequestConfig config = RequestConfig.custom().setProxy(proxy).build();
CloseableHttpClient client= HttpClientBuilder.create().setDefaultRequestConfig(config).build();
String url = "https://jerrywang.com:9002/rest/v2/electronics/users/jerry.wang@sap.com";
String token = "test";
HttpGet get = new HttpGet(url);
get.setHeader("Authorization", "Bearer " + token);
try {
HttpResponse response = client.execute(get);
HttpEntity entity = response.getEntity();
String result = EntityUtils.toString(entity, "UTF-8");
System.out.println("url: " + result);
} catch (Exception e){
e.printStackTrace();
}
}
執行Java應用,然后到Fiddler里,看到了監控到的HTTP請求各種明細,比如Java代碼里硬編碼的OAuth 2的認證token test:
Java代碼收到的服務器端返回的錯誤消息:
這個錯誤消息在Fiddler里當然也是可以看到的:
在這種場景里,Fiddler扮演的就是類似Chrome開發者工具的角色。
要獲取更多Jerry的原創文章,請關注公眾號"汪子熙":