从android访问asp.net web api http服务

时间:2012-09-09 22:40:58

标签: android asp.net-web-api

我的开发框中有一个在Visual Studio中运行的ASP.NET Web API服务。我很容易从I.E.获得正确的结果。或输入:http://localhost:61420/api/products或FireFox。但是当我尝试使用我的AVD从我的Android项目中读取它时,我会得到一个例外:

  

localhost / 127.0.0.1:61420 - 拒绝连接。

我知道我的Android Java代码有效,因为我可以访问在我的网站上运行的WCF RESTFul服务(当前已注释掉的URL)。我的Android代码粘贴在下面。

那么,为什么我从Eclipse项目访问时遇到错误,而不是从浏览器访问时出错? 感谢

public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    HttpURLConnection urlConnection = null;

    try 
    {
        //URL url = new URL("http://www.deanblakely.com/myRESTService/SayHello");
        URL url = new URL("http://localhost:61420/api/products");
        urlConnection = (HttpURLConnection) url.openConnection();
        InputStream in = new BufferedInputStream(urlConnection.getInputStream());     
        String myString = readStream(in);
        String otherString = myString;
        otherString = otherString + " ";
    } 
    catch (MalformedURLException e) 
    {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } 
    catch (IOException e) 
    {   
        e.printStackTrace();
    }
    finally 
    {     
        urlConnection.disconnect();   
    } 
}

private String readStream(InputStream is) 
{ 
    try
    { 
        ByteArrayOutputStream bo = new ByteArrayOutputStream(); 
        int i = is.read();

        while(i != -1)  
        { 
            bo.write(i); 
            i = is.read(); 
        } 

        return bo.toString(); 
    } 
    catch (IOException e)  
    { 
        return "" + e; 
    } 
} 
} 

3 个答案:

答案 0 :(得分:2)

Visual Studio开发Web服务器仅接受来自本地主机的连接,而不接受通过网络或其他虚拟连接的连接。听起来像AVD被视为远程主机。

答案 1 :(得分:1)

要从任何地方访问该应用,请更改应使用的网络服务器。假设您使用的是Windows 7和Visual Studio 2010,请确保安装了IIS并安装了所有必需的功能,并将本地IIS设置为项目设置中的Web服务器:

project settings

可能需要以管理员身份启动Visual Studio以使用本地IIS运行它。

答案 2 :(得分:0)

使用机器的实际IP地址,即http://192.168.0.xx

只有您的本地计算机才能访问localhost,如果您在模拟器或设备上,它将通过NAT或来自路由器的DHCP具有不同的IP。