正确的方法来实现查询并直接进行改造,Android吗?

时间:2018-07-24 17:17:16

标签: android retrofit

我是从事Android改造工作的新手。我使用IIS创建服务,并在其中加载JSON,如下所示:

 [{"Id":1,"Name":"Product1","Price":9.99}, 
 {"Id":2,"Name":"Product2","Price":19.99}, 
 {"Id":3,"Name":"Product3","Price":29.99}, 
 {"Id":4,"Name":"Product4","Price":39.99}, 
 {"Id":5,"Name":"Product5","Price":49.99},
  ...]

我可以使用改造指令@GET带来一些特定数据。但是,当我尝试实现@QUERY或@HEADER时,收到的结果不是我期望的。例如:

我有我的界面:

public interface ServiceProduct {
@GET("api/Product/{id}")
Call<ManagerProduct> getFindShop(@Path(value="id") String productID);

@GET("api/Product")
Call<ManagerProduct> getHeader(@Header("Name") String header);
}

我的ManagerProduct.java类是这样的:

public class ManagerProduct {

@SerializedName("Id")
@Expose
private Integer id;
@SerializedName("Name")
@Expose
private String name;
@SerializedName("Price")
@Expose
private Double price;

public Integer getId() {
return id;
}

public void setId(Integer id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public Double getPrice() {
return price;
}

public void setPrice(Double price) {
this.price = price;
}

我给服务打电话的方式是改型:

private void LoadProduct() {

    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(baseUrl)
            .addConverterFactory(GsonConverterFactory.create())
            .build();

    ServiceProduct serviceProduct = retrofit.create(ServiceProduct.class);
    Call<ManagerProduct> listProduct = serviceProduct.getHeader("Product2");

    listProduct.enqueue(new Callback<ManagerProduct>() {
        @Override
        public void onResponse(Call<ManagerProduct> call, 
   Response<ManagerProduct> response) {
            if (response.isSuccessful()) {

                listManagerProduct=response.body();
                for (int i=0;i<listManagerProduct.size();i++){

           System.out.println(listManagerProduct.get(i).getPrice());

                }

            }
        }

        @Override
        public void onFailure(Call<List<ManagerShop>> call, Throwable t) {

        }
    });


}

我得到的结果是19.99,但是我却收到9.99,19.99,29.99,39.99,49.99。

我做错了什么?

作为其他信息,在搜索信息时,我发现了这个问题: retrofit 2 @path Vs @query

答案:

请考虑以下网址:

  www.app.net/api/searchtypes/862189/filters?Type=6&SearchText=School

现在这是电话:

 @GET("/api/searchtypes/{Id}/filters")
 Call<FilterResponse> getFilterList(@Path("Id") long customerId,
      @Query("Type") String responseType,
      @Query("SearchText") String searchText);

所以我们有:

  www.app.net/api/searchtypes/{Path}/filters?Type={Query}&SearchText={Query}

之后是什么?通常是查询。​​

如果我尝试编写URL并直接在浏览器中查询:

 http://server/api/Product?Name=Product2

我收到了完整的JSON。因此,我不知道我是否实施了错误的服务。我完全迷路了,我读了很多书,但我听不懂。

有什么帮助吗?

0 个答案:

没有答案