2012-04-13 27 views
7

Tôi đang phát triển một ứng dụng Android sử dụng bình của bên thứ ba. Tôi muốn theo dõi và có thể sửa đổi các yêu cầu HTTP do thư viện đó cấp. Trong iOS, tôi có thể thực hiện điều đó bằng cách đăng ký lớp NSURLProtocol tùy chỉnh có thể kiểm tra và thao tác bất kỳ yêu cầu mạng nào xảy ra trong quá trình của ứng dụng.Tương đương với Android của NSURLProtocol từ SDK iOS là gì?

Có điều gì tương tự cho Android không? Tôi thừa nhận, tôi mới phát triển Android, nhưng đã không thể tìm thấy một giải pháp làm việc cho vấn đề này.

Tôi không có nguồn cho lọ này và tôi không thể dựa vào việc giải mã nó.

Một vài điều tôi đã khám phá:

  • Android ContentProvider. Sẽ không hoạt động, vì giải pháp phải hỗ trợ yêu cầu "http: //", chứ không phải yêu cầu "nội dung: //".
  • Tạo lớp tùy chỉnh org.apache.http.impl.client.DefaultHTTPClient. (Đây là lớp mạng cơ bản được sử dụng cho các yêu cầu tôi đang theo dõi). Có vẻ như điều này sẽ không hoạt động, vì Android đã lưu trữ phiên bản hệ thống của lớp này và luôn tải thay vì của tôi, mặc dù nó được đặt cao hơn theo thứ tự tải.

Tôi đã nhìn qua thư viện Apache HTTP khá tốt, và trong khi nó có tất cả các loại của những thứ như HttpRequestInterceptor, HttpResponseInterceptor lớp, điều đó không làm cho tôi nhiều tốt, vì thư viện instantiates một DefaultHTTPClient dụ và chuyển nhượng nó cho một thành viên riêng tư trong một phương pháp riêng tư mà tôi không có quyền truy cập.

Mục tiêu cuối cùng của tôi ở đây là theo dõi và thay đổi các yêu cầu này cho mục đích thử nghiệm đơn vị. Tôi không muốn các yêu cầu thực sự được ban hành; Tôi muốn cung cấp một phản ứng giả.

Trả lời

2

Rất tiếc, bạn không may mắn: không có khung chặn đánh chặn ứng dụng nào có sẵn cho ứng dụng Android.

Đề xuất của tôi là thiết lập proxy chặn các yêu cầu và cung cấp phản hồi giả của bạn.

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