对localhost服务器的简单retrofit2请求

时间:2016-10-17 03:08:39

标签: java android tomcat retrofit2 nosql

尝试制作一个与使用noSQL服务器的localhost服务器(tomcat apache)进行通信的Android应用程序(app-> tomcat-> noSQL)。我已经设法创建一个servlet来处理“get”方法上的params并将它们正确加载到数据库,现在我正在尝试使用retrofit2 lib从我的应用程序插入数据。 以下视频和教程我仍然无法完成这项工作。

这是我正在使用的界面:

public interface APIService {

    @POST("login")
    Call<Boolean> postUser(@Body User user);

    @GET("login")
    Call<Boolean> getUser(@Query("user_email") String user_email,@Query("user_pass") String user_pass);

    public static final Retrofit retrofit = new Retrofit.Builder()
            .baseUrl("http://localhost:8080/")
            .addConverterFactory(GsonConverterFactory.create())
            .build();
}

这是我在应用程序中单击按钮时使用的代码:

APIService ApiService = APIService.retrofit.create(APIService.class);

User user = new User(name, email);
Call<Boolean> call = ApiService.getUser(email,name);
call.enqueue(new Callback<Boolean>() {
    @Override
    public void onResponse(Call<Boolean> call, Response<Boolean> response) {
        String ans = response.message(); //for debugging
        if (ans.compareTo("yes") == 0) {
            Toast.makeText(getApplicationContext(), "YES!", Toast.LENGTH_SHORT).show();
        } else if (ans.compareTo("no") == 0) {
            Toast.makeText(getApplicationContext(), "NO!", Toast.LENGTH_SHORT).show();
        } else {
            Toast.makeText(getApplicationContext(), "ELSE?!", Toast.LENGTH_SHORT).show();
        }
    }

    @Override
    public void onFailure(Call<Boolean> call, Throwable t) {
        Toast.makeText(getApplicationContext(), t.getMessage(), Toast.LENGTH_SHORT).show();
    }



});

所以atm,当我点击按钮时没有任何事情发生。(它曾用于粉碎但它停止了)我确信正在调用按钮的功能。

2 个答案:

答案 0 :(得分:2)

如果您使用的是模拟器,请将网址更改为http://10.0.2.2:8080/

答案 1 :(得分:-1)

解决问题的两种方法

  1. 如果您正在使用模拟器运行,请使用URL作为http://10.0.2.2:8080/ 而不是localhost

  2. 从移动应用程序运行时使用PC IP地址