我对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();
}
请帮助解决我的问题。
答案 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。