1

我在我的开发盒上的 Visual Studio 中运行了一个有效的 ASP.NET Web API 服务。通过输入以下命令,我可以轻松地从 IE 或 FireFox 获得正确的结果:http://localhost:61420/api/products. 但是当尝试使用我的 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; 
    } 
} 
} 
4

3 回答 3

2

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

于 2012-12-12T21:15:43.677 回答
1

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

项目设置

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

于 2013-06-06T11:12:58.667 回答
0

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

只有您的本地机器可以访问 localhost,如果您在模拟器或设备上,它将通过 NAT 或路由器的 DHCP 获得不同的 IP。

于 2012-09-10T00:08:45.573 回答