2012-03-08 29 views
21

Tôi hiện đang viết một ứng dụng java sử dụng HTTP POST để tải lên tệp csv và một vài tham số khác tới máy chủ. Máy chủ tiếp tục trả lại 500 lỗi cho ứng dụng của tôi và tôi muốn xem yêu cầu HTTP trong Fiddler để tôi có thể thấy yêu cầu POST.
Khi tôi chạy Fiddler, nó sẽ không nắm bắt bất kỳ lưu lượng HTTP nào từ ứng dụng Java. Tôi đã viết một yêu cầu GET hoạt động, vì vậy tôi biết tôi có thể giao tiếp với máy chủ, tuy nhiên không có lưu lượng được hiển thị thông qua Fiddler.Fiddler không thu thập các yêu cầu HTTP từ Ứng dụng Java

+0

Có một Java Servlet xử lý bài đăng không? –

+0

bạn có chắc chắn đó không phải là lưu lượng truy cập https không? – matcheek

+0

Không có. Tôi đang sử dụng HTTPComponents của Apache để gọi phương thức tải lên từ API trên máy chủ. – Andrew

Trả lời

18

Bạn chỉ có thể thiết lập Fiddler như HTTP proxy cho ứng dụng của bạn bằng cách thiết lập các thuộc tính

http.proxyHost-localhosthttp.proxyPort- cho lưu lượng HTTP và https.proxyHost/https.proxyPort cho lưu lượng HTTPS. Đối với lưu lượng HTTPS, bạn cũng phải thêm chứng chỉ gốc Fiddler (có thể xuất trong hộp thoại tùy chọn) làm chứng chỉ tin cậy cho ứng dụng của bạn.

Bạn có thể làm như vậy bằng cách thêm các dòng sau vào phần đầu của mã

System.setProperty("http.proxyHost", "localhost"); 
System.setProperty("http.proxyPort", "8888"); 

của bạn hoặc cài đặt chúng thông qua dòng lệnh khi khởi động Java VM:

java -Dhttp.proxyHost=localhost -Dhttp.proxyPort=8888 ... 
+0

Máy chủ phát triển mà tôi đang viết chống lại sử dụng chứng chỉ tự ký vì vậy tôi đã viết các lớp để tin tưởng tất cả các chứng chỉ. Tôi đã đặt các đặc tính proxyHost và proxyPort, tuy nhiên tôi vẫn không thấy bất kỳ lưu lượng truy cập nào từ ứng dụng thông qua Fiddler. – Andrew

+0

Tôi có thể làm việc này bằng cách sử dụng https trong các thuộc tính và thay đổi máy chủ cục bộ thành 127.0.0.1. – Andrew

+1

Thay đổi của tôi giúp bạn có thể xem yêu cầu HTTP GET sử dụng HttpURLConnection. Yêu cầu POST đang sử dụng HttpComponents của Apache và tôi không thể thấy lưu lượng truy cập này. – Andrew

1

Với Jetty HTTP client , giải pháp trước đó không hoạt động. Tuy nhiên, các công trình sau đây:

HttpClient httpClient = new HttpClient(); 
httpClient.setProxy(new Address("127.0.0.1", 8888)); 
httpClient.start(); 
+0

Bạn có biết cách để làm cho nó hoạt động với HTTPS? – Arya

Các vấn đề liên quan