2014-09-04 21 views
11

Tôi đang sử dụng một dịch vụ bên ngoài như: http://domain.com/free/v1/servicename.ext?format=json&num_of_days=4Retrofit với một dịch vụ học cũ

tôi cố gắng sử dụng Retrofit như thế:

@GET("/free/v1/servicename.ext?format=json&num_of_days={numOfDays}") 
void serviceName(@Path("numOfDays") int numOfDays, Callback<Result> callback); 

nhưng một ngoại lệ được ném:

URL query string must not have replace block. 

Ứng dụng có tương thích với loại url này không?

Trả lời

34

Nó hoàn toàn tương thích với nó!

Bạn không thể sử dụng @Path bên trong tham số truy vấn. Chú thích đó chỉ dành cho các thay thế bên trong đường dẫn.

Tham số @Query cho phép tạo tham số truy vấn động.

@GET("/free/v1/servicename.ext?format=json") 
void serviceName(@Query("num_of_days") int numOfDays, Callback<Result> callback); 
+0

Cảm ơn bạn rất nhiều Jake! Nó hoạt động tốt! – Fab

+0

TRUE đã giúp tôi rất nhiều, Cảm ơn bạn! thay thế: @GET ("/ api/access_token nickname = {nickname} & password = {} mật khẩu?") Quan sát authorizationToken ( @Path ("nickname") String userName, @Path ("password ") Mật khẩu chuỗi ); Với: @GET ("?/Api/access_token") Quan sát authorizationToken ( @Query ("nickname") String nickname, @Query ("password") String password ); Và nó hoạt động như một sự quyến rũ. – careful7j

+0

Tại sao trang bị thêm 2 phải đặt 'baseUrl()'? Tôi nghĩ '@GET ('http://www.google.com/path')' dễ sử dụng hơn nhiều. –

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