【问题标题】:Android request to a ASP.NET Web API对 ASP.NET Web API 的 Android 请求
【发布时间】:2013-07-14 14:54:30
【问题描述】:

我正在尝试从 Android 向 ASP.NET Web API 发出 GET 请求。 API 应该返回一个带有一些用户的 JSON 对象。从浏览器调用 API 时一切正常,但尝试从 Androind 应用程序调用时没有任何反应。我查看了 Fiddler 并没有发送任何请求。

这是我用来拨打电话的代码:

class GetData extends AsyncTask<String, String, String>{
        @Override 
        protected String doInBackground(String... params){
            HttpClient client = new DefaultHttpClient();
            HttpResponse response;
            try{
            HttpGet get = new HttpGet("http://10.0.2.2:38216/api/user");
            response = client.execute(get);
            if(response != null){
                InputStream inStream = response.getEntity().getContent();
                String message = convertToString(inStream);
                return message;
            }
        }
        catch(Exception exp){
            Log.d("Error message!", exp.toString());
        }
        return null;
    }
}

任何关于我做错了什么的想法或提示将不胜感激!

【问题讨论】:

  • 只是为了确认一下,您正在模拟器上运行它,并且您的 Web 应用程序正在监听运行该模拟器的开发机器的localhost?如果是,LogCat 是否显示异常和堆栈跟踪?另外,你确定你正在执行这个任务吗?
  • 我在模拟器上运行,而 LogCat 没有显示任何内容。此外,我确信任务会被调用,因为我已经查看了调试器并且任务上的断点被命中。还调用了client.execute(get),但返回的响应没有任何用处,Fiddler 也没有显示对 Web API 的任何调用。
  • "with nothing有用" -- 如果它没有抛出异常,那么响应中有一些有用的东西,比如状态码。
  • 好的,所以我再次查看调试,我得到一个状态码 200。这告诉我调用完成了。但是我又看了一眼 Fiddler,那里什么也没显示。为什么从浏览器拨打电话时我看到了它,但当我从 Android 应用程序拨打电话时却没有显示?我错过了什么吗?
  • “我错过了什么吗?” - 是的,您在 Fiddler 中缺少输出。 :-) Fiddler 是否在端口38216 上运行?还是您在 Web 浏览器中将 Fiddler 设置为代理,而端口 38216 是 Web 应用程序本身?

标签: android asp.net-web-api


【解决方案1】:

HttpClient 不会自动使用您可能已在其他应用程序(例如 Web 浏览器)中配置的代理。你需要教 HttpClient 这方面的知识,via DEFAULT_PROXYvia System.setProperty() 用于 http.proxy*https.proxy*(在你的情况下,http.proxy*,因为你没有使用 SSL)。

【讨论】:

  • 我现在正在获取数据。但是 Fiddler 问题仍然存在。它没有向我显示请求。我可以忍受它,因为我现在知道正在拨打电话,但它仍然困扰着我,因为我在 Fiddler 中看不到请求。你能指出为什么会这样吗?
  • @CosminIonascu:打败我。如果您有指向 Fiddler 的代理设置,我不知道您将如何获取数据并且 Fiddler 不会参与该过程。
  • 这个问题可能有助于解决您的 Fiddler 问题:stackoverflow.com/questions/214308/…
猜你喜欢
  • 2023-03-09
  • 2020-07-06
  • 1970-01-01
  • 2016-06-30
  • 1970-01-01
  • 1970-01-01
  • 2016-03-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多