改造2.3 url调用没有返回值

时间:2017-11-11 10:53:35

标签: android retrofit2

我对Retrofit有点问题。我想调用一个url(它是一个带端口号的修复IP),它没有返回值。我的代码运行了,但什么也没发生。 (它将是一个家庭自动化系统,这个代码应该打开我的车库。服务器是R.PI上的Jetty Servlet)

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Button garageBtn = (Button)findViewById(R.id.garageBtn);

    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl("http://192.168.96.100:8080/")
            .build();

    GarageApi service = retrofit.create(GarageApi.class);

    garageBtn.setOnClickListener((View v) -> {
        service.garagemove();
        //Log.d("Retrofit", service.garagemove().toString());
    });


}}

public interface GarageApi {
  @GET("garage")
  Call<ResponseBody> garagemove();
}

请帮助解决我的问题。

2 个答案:

答案 0 :(得分:1)

如果你有一个不返回任何东西的api方法(也就是返回void),你可以使用内部java对象Void作为改进方法的返回值。

代码示例:

@GET("path/to/void/api")
Call<Void> garageMove();

Here您可以阅读有关改造和无效响应的更多信息。

答案 1 :(得分:0)

通过改造来有效地调用您需要将其排入队列的界面。 所以你需要做一些事情:

service.garagemove().enqueue(new Callback<ResponseBody>() {
        @Override
        public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {

        }

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

        }
    });

然后实现(覆盖)方法onResponse和onFailure。