我正在使用django rest框架为我的android客户端应用程序编写后端api。 api,因为它仍在开发中,正在我的计算机上本地运行。 Android应用程序正在物理索尼xperia z上运行。我希望能够从物理设备调用api端点,尽管api在本地运行。
我尝试在基本api url中使用我的计算机的IPv4地址,如下所示:
这" http://127.XX.X.X:8000/"而不是这个" http://127.0.0.1:8000/"。
我尝试过使用过的局域网的IP地址:
这" http://192.XXX.X.XXX:8000/"而不是这个" http://127.0.0.1:8000/"。
其中没有一个调用api端点。
也许错误在于我的android客户端,在代码中负责向端点发出请求。
我使用改装api来调用android app后端api。
这是我的UserService界面:
public interface UserService {
@POST("users/create/")
Call<User> createUser(@Body User user);
@POST("users/api-token-auth/")
Call<String> loginInToken(@Body String email, @Body String password);
}
这是我的用户存储库,它使用此接口来调用api:
public class UserRepository implements UserRepositoryInterface {
private UserService userServiceApi;
public UserRepository() {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(BASE_API_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
userServiceApi = retrofit.create(UserService.class);
}
@Override
public void createUser(User user) {
Call<User> call = userServiceApi.createUser(user);
call.enqueue(new Callback<User>() {
@Override
public void onResponse(Call<User> call, Response<User> response) {
Log.d("USER_REPOSITORY", response.toString());
}
@Override
public void onFailure(Call<User> call, Throwable t) {
Log.d("USER_REPOSITORY", t.toString());
}
});
}
}
我专注于让创建用户端点正常工作。但是,当我在我的物理设备上运行应用程序时,throwable会打印到onFailure界面方法的日志中,无论X地址的IP地址是USER_REPOSITORY: java.net.ConnectException: Failed to connect to /XXX.XX.X.X:8000
。
以防万一,这里是我在django-rest api的urls.py文件中调用的url,以显示我正在调用正确的URL:
url(r'^api-token-auth/', auth_views.obtain_auth_token),
url(r'create/$', user_views.UserCreate.as_view(), name="create"),
当api不在生产中时,必须有办法调用api端点。我做错了什么或我不做什么?