2013-10-22 59 views
0

我想在Android上运行与HttpClient的HTTP请求。 这是我在Android端代码:HttpClient坚持Android与Genymotion模拟器

httpParams = new BasicHttpParams(); 
HttpConnectionParams.setConnectionTimeout(httpParams, 15000); 

// Create a new HttpClient and Post Header 
httpClient = new DefaultHttpClient(httpParams); 
getRequest = new HttpGet(Dictionary.MINYAN_SERVER + servlet); 
getRequest.addHeader(ACCEPT, APP_JSON); 

HttpResponse response = httpClient.execute(getRequest); //STUCKED HERE 

如果我删除了超时设置我从来没有得到回应。随着超时,我得到一个超时异常。

在服务器端我有一个简单的servlet运行在我的本地主机上。下面是代码:

public class Test extends HttpServlet 
{ 
    private static final long serialVersionUID = 1L; 

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
    { 
     System.out.println("adasdasd asdsadsad"); 
     JSONObject obj = new JSONObject(); 
     try 
     { 
      obj.put("name", "vlad"); 
     } 
     catch (JSONException e) 
     { 
      e.printStackTrace(); 
     } 

     response.setContentType("application/json"); 
     response.getWriter().write(obj.toString()); 
    } 
} 

注:

当试图从我得到的浏览器访问loclhost:8080/Test{"name":"vlad"}这是罚款。

Dictionary.MINYAN_SERVER保留http://10.0.2.2:8080/servet保留Test

我在我的Manifest.xml文件中拥有Internet权限。

任何想法我能做些什么来解决它?

+0

如果使用'URLConnection',会发生同样的事情吗? –

+0

我如何使用它? – vlio20

+0

它只是Java的默认http客户端。搜索这里或谷歌,并尝试它。你很可能会得到相同的结果,但我很好奇。 –

回答

2

好的,所以在@Olaf Kock的gr8帮助下,我找到了解决方案here。 Genymotion在Virtualbox上运行,默认网络配置为“仅限主机”。此方法实质上模拟由Genymotion VM(模拟器)和主机共享的物理网络。网络名称为vboxnet0,如果在主机上运行“ifconfig vboxnet0”(或者如果运行Windows,则为“ipconfig vboxnet0”),则应该在vboxnet0网络上收到主机的IP地址。默认IP很可能是192.168.56.1。这是从Genymotion仿真器访问主机时使用的IP地址。

为我工作的网址是:

http://192.168.56.1:8080/

更新:

你驾驶室发现你的IP地址(follow this link to get your IP address)。把这个地址如下:http://ip_address:80808080是你本地主机web服务器的端口(tomcat默认端口)。

相关问题