Tôi muốn luôn thêm thông số vào các cuộc gọi Retrofit của mình. Đối với các giá trị mà tôi có thể mã khó, tôi có thể chỉ cần sử dụngTrang bị thêm: thêm tham số thời gian chạy vào giao diện?
@POST("/myApi?myParam=myValue")
nhưng nếu tôi muốn nối thêm android.os.Build.MODEL
thì sao?
@POST("/myApi?machineName="+ Build.MODEL)
không hoạt động. Sẽ hữu ích khi có thể trừu tượng phần này của cuộc gọi mạng khỏi mã thực thi.
EDIT
tôi có thể thêm Build.MODEL
cho tất cả các cuộc gọi api của tôi bằng cách sử dụng một RequestInterceptor
. Tuy nhiên nó vẫn eludes tôi làm thế nào để thêm nó có chọn lọc để chỉ một số cuộc gọi api của tôi trong khi vẫn sử dụng cùng một RestAdapter
.
EDIT 2
Cố định tiêu đề đó là tất cả các loại sai.
EDIT 3
thực hiện hiện tại:
RestAdapter restAdapter = new RestAdapter.Builder()
.setEndpoint("myapi")
.setRequestInterceptor(new RequestInterceptor() {
@Override
public void intercept(RequestInterceptor.RequestFacade request) {
request.addQueryParam("machineName", Build.MODEL);
}
})
.build();
API_SERVICE = restAdapter.create(ApiService.class);
Tôi hiện đang sử dụng một 'RequestInterceptor' để thêm tham số vào tất cả các cuộc gọi api, api sau đó bỏ qua các thông số bổ sung trên các cuộc gọi mà chúng không cần thiết. Điều này làm việc, nhưng làm cho mã ít rõ ràng hơn bởi vì nó không thể xác định các cuộc gọi cần những tham số mặc định vì vậy tôi để lại câu hỏi này mở. – GDanger