API调用适用于localhost,但不适用于127.0 API

时间:2016-06-03 17:06:56

标签: android api localhost android-volley

我正在编写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这里。

0 个答案:

没有答案