我正在编写Android应用程序,目前正致力于向现有API发送POST请求以授权用户。当我在本地计算机上启动快速服务器并尝试通过命令行授权用户时,它可以工作,但是在Android上,您无法从模拟器访问本地主机,因此我不得不启动http服务器。但是,当我尝试调用此新IP地址时,我无法再成功调用公司API。我很好奇是否有一种解决方法或方法可以从我的Android模拟器连接到此API而无需仅在localhost上运行我的服务器。
我目前的Android代码使用Volley库进行API调用
String url ="http://localhost:3000/users/authorize";
StringRequest stringRequest = new StringRequest(Request.Method.POST, url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Toast.makeText(LoginActivity.this,response,Toast.LENGTH_LONG).show();
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(LoginActivity.this,error.toString(), Toast.LENGTH_LONG).show();
}
}){
@Override
protected Map<String,String> getParams(){
Map<String,String> params = new HashMap<String, String>();
params.put("email",mEmail);
params.put("password",mPassword);
return params;
}
};
mRequestQueue.add(stringRequest);
对localhost的命令行调用工作正常!但是,当我将字符串URL切换到我的http服务器IP地址时,我无法再成功连接到我的API并授权用户!任何帮助或想法?
编辑:我发现了答案。要从Android模拟器连接到您的计算机localhost,您必须使用IP 10.0.2.2。 link这里。