Reputation: 415
I was trying to get data from rest api using Retrofit
. The api is a get
request and the query params should be of the form
{state: 'state', filters: {page: 1, filter: ''}}
I tried creating a Filter class and annoted the same inside Request body class like below
public class ReferralRequestBody {
@SerializedName("filters")
@Expose
private Filter filter;
public Filter getFilter() {
return filter;
}
public void setFilter(Filter filter) {
this.filter = filter;
}
}
This is how I am trying now to send the request. It is a get request with query params. I need to send the Filter as query param.
@GET("/api/data")
Observable<APIResponse> getData(@Query("state") String state,
@Query("filters") RequestBody filter);
But the request is still bad. Please help.
Upvotes: 4
Views: 1681
Reputation: 1555
Create the following model classes,
public class ReferralRequestBody {
@SerializedName("state")
@Expose
private String state;
@SerializedName("filters")
@Expose
private Filters filters;
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public Filters getFilters() {
return filters;
}
public void setFilters(Filters filters) {
this.filters = filters;
}
}
Also, create this,
public class Filters {
@SerializedName("page")
@Expose
private Integer page;
@SerializedName("filter")
@Expose
private String filter;
public Integer getPage() {
return page;
}
public void setPage(Integer page) {
this.page = page;
}
public String getFilter() {
return filter;
}
public void setFilter(String filter) {
this.filter = filter;
}
}
Then set the data for the state, filter like,
ReferralRequestBody referralrequestbody=new ReferralRequestBody();
referralrequestbody.setState("state");
Filters filters=new Filters();
filters.setPage("page data");
filters.setFilter("filter data");
and call the function as,
@GET("/api/data")
Observable<APIResponse> getData(
@Body ReferralRequestBody referralrequestbody);
Upvotes: 2