2017-07-26 61 views
0

如何在Retrofit2中的REST風格Web服務中調用以下服務端點?如何在改進中調用此webservice

我的服務端點:

http://crb.cloud/mileage/api/?expanse_view_user&Appkey=MiLeAgE&Userid=1&Vehid=1

我的代碼:

interface APIInterface { 
@GET("expanse_view_user/{Appkey}") 
Call<Example> getUserById(@Path("Appkey") String mlg, @Query("Userid") 
    Integer id , @Query("Vehid") Integer vehid); 

} 


class APIClient { 
private static Retrofit retrofit = null; 
static Retrofit getClient() { 
    HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(); 
    interceptor.setLevel(HttpLoggingInterceptor.Level.BODY); 
    OkHttpClient client = new OkHttpClient.Builder().addInterceptor(interceptor).build(); 

    retrofit = new Retrofit.Builder() 
      .baseUrl("http://crb.cloud/mileage/api/?") 
      .addConverterFactory(GsonConverterFactory.create()) 
      .client(client) 
      .build(); 
    //expanse_view_user&Appkey=MiLeAgE&Userid=1&Vehid=17 
    return retrofit; 
} 
} 


public class MainActivity extends AppCompatActivity { 

APIInterface apiInterface; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    apiInterface = APIClient.getClient().create(APIInterface.class); 
    Call<Example> call = apiInterface.getUserById("MiLeAgE",1,17); 
    call.enqueue(new Callback<Example>() { 
     @Override 
     public void onResponse(Call<Example> call, Response<Example> response) { 
      Log.e("TAG",response.code()+""); 

      String displayResponse = ""; 

      Example resource = response.body(); 
      Integer text = resource.status; 
      String total = resource.message; 
      } 
     } 
     @Override 
     public void onFailure(Call<Example> call, Throwable t) { 
     } 
    }); 
} 
} 
+0

改進的帖子和格式 – user1438038

回答

0

您可以使用HashMap。例如:

@GET("?expanse_view_user") 
Call<YourModelClass> getUserById(@QueryMap HashMap<String, String> params); 

從正在請求到服務器,你可以使用這樣的:

HashMap<String, String> params = new HashMap<>(); 
params.put("key1", "value1"); 
params.put("key2", "value2"); 
params.put("key3", "value3"); 

apiInterface = APIClient.getClient().create(APIInterface.class); 
Call<Example> call = apiInterface.getUserById(params); 
+0

響應代碼404顯示 –

+0

顯示相同的錯誤 –

0

你可以這樣

@GET("?expanse_view_user") 
Call<Example> getData(@Query("Appkey") String Appkey, @Query("Userid") String Userid, @Query("Vehid") String Vehid); 

和基礎URL創建API如http://crb.cloud/mileage/api/