Java 如何从物理android客户端调用未发布的本地托管api?
我正在使用django rest框架为我的android客户端应用程序编写一个后端api。由于api仍在开发中,因此正在我的计算机上本地运行。android应用程序正在sony xperia z上运行。我希望能够从物理设备调用api端点,尽管api在本地运行 我已尝试在基本api url中使用我的计算机的IPv4地址,如下所示: 这个“”而不是这个“” 我已尝试使用所用LAN的IP地址: 这个“”而不是这个“” 它们都不调用api端点 也许错误在我的android客户端中,在负责向端点发出请求的代码中 我使用改型api调用android应用程序后端api 这是我的用户服务界面:Java 如何从物理android客户端调用未发布的本地托管api?,java,android,api,django-rest-framework,retrofit2,Java,Android,Api,Django Rest Framework,Retrofit2,我正在使用django rest框架为我的android客户端应用程序编写一个后端api。由于api仍在开发中,因此正在我的计算机上本地运行。android应用程序正在sony xperia z上运行。我希望能够从物理设备调用api端点,尽管api在本地运行 我已尝试在基本api url中使用我的计算机的IPv4地址,如下所示: 这个“”而不是这个“” 我已尝试使用所用LAN的IP地址: 这个“”而不是这个“” 它们都不调用api端点 也许错误在我的android客户端中,在负责向端点发出请求的
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不在生产环境中时,必须有一种方法来调用api端点。我做错了什么或没有做什么?您的计算机与手机在同一网络上吗?您的Web服务器是设置为响应
192.x.y.z
地址,还是仅响应localhost
?它们都位于同一网络上。如何设置web服务器以响应192.x.y.z地址?是否使用“manage.py runserver”启动django应用程序?默认情况下,它只绑定到localhost,您需要将绑定到的IP地址指定为参数(请参见此响应)是的,我只是在使用python manage.py runservers非常感谢,它现在可以工作了!
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());
}
});
}
}
url(r'^api-token-auth/', auth_views.obtain_auth_token),
url(r'create/$', user_views.UserCreate.as_view(), name="create"),