从Android访问工作HTTPService时遇到问题

时间:2012-03-25 00:19:39

标签: java android

我有一个有效的.Net WCF HTTP服务。如果我将网址放入I.E,FireFox或Google Chrome浏览器,我会收回正确的信息流。但是当我尝试在Android应用程序(在Eclipse中运行)中访问相同的服务时,我得到一个带有详细消息“Permission Denied”的socketException。该服务在我的机器上运行在Visual Studio Web主机中,客户端也在我的机器上的android模拟器中运行。

获得异常的行是: InputStream in = new BufferedInputStream(urlConnection.getInputStream());

(我在同一个程序上有一篇早先的帖子,网址是www.android.com,我收到的网址是“无效的网址”)

可能有人知道为什么浏览器没有问题,Android客户端被拒绝许可? 谢谢, 加里

        HttpURLConnection urlConnection = null;

        try 
        {
            URL url = new URL("http://localhost:8080/TeamTask/Tasks");   
            urlConnection = (HttpURLConnection) url.openConnection();
            InputStream in = new BufferedInputStream(urlConnection.getInputStream());     
            readStream(in);
        } 
        catch (MalformedURLException e) 
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } 
        catch (IOException e) 
        {   
            e.printStackTrace();
        }  

1 个答案:

答案 0 :(得分:3)

拒绝权限很可能是由于您的AndroidManifest.xml文件中没有权限而导致的。

此外,我还没有对它进行过测试,但我认为使用“localhost”无法启动,因为它在模拟器上运行,就像使用localhost的VM机器指向VM一样,而不是主机 - 放入机器的IP地址。我目前正在同一网络上测试来自不同机器的一些Android HTTP调用,我只是输入服务器的本地IP。

编辑:

最后,这里有一些经过验证的真实代码,我定期用它来进行简单的HTTP调用:

public String getURLcontents(URL url) throws IOException{
    String response = "failed";
    HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
    Log.v(TAG, "Opening connection: " + url.toString());
    try {
        InputStream in = new BufferedInputStream(urlConnection.getInputStream());
        response = new Scanner(in).useDelimiter("\\A").next();
    }
    catch (Exception e) {
        urlConnection.disconnect();
        return response = "failed";
    }
    finally {
        urlConnection.disconnect();
        Log.v(TAG, "Closed connection");
    }
    return response;
}