简单的http post调用不适用于Android应用

时间:2013-08-01 14:46:45

标签: java android servlets post

我在Android应用程序中有以下代码:

DefaultHttpClient hc=new DefaultHttpClient();
          ResponseHandler <String> res=new BasicResponseHandler();
          HttpPost postMethod=new HttpPost("http://127.0.0.1:8888/unidad6_eje1_conectarbd/ejecutaPOST"); 
          List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
          nameValuePairs.add(new BasicNameValuePair("value1", "Value my user entered"));
          postMethod.setEntity(new UrlEncodedFormEntity(nameValuePairs));
          String response=hc.execute(postMethod,res);

但它在最后一行失败了:

http://127.0.0 1: 8888/unidad6_eje1_conectarbd/ejecutaPOST 

可能已正确配置以接收POST请求,就像我将该URL放在Web浏览器中一样,它会给出错误:错误405 HTTP方法此URL不支持GET。

servlet的代码如下:

公共类LoginImpl扩展了HttpServlet {

public static String nombre="";

String clave="";

    @Override
    public void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {

          String value1 = request.getParameter("value1");

          System.out.println(value1);
    }
}

我认为不应该是一个问题。

任何人都可以告诉我可能发生的事情吗?

2 个答案:

答案 0 :(得分:0)

  1. 您无法通过IP地址127.0.0.1访问任何内容,因为它是环回。因此,模拟器或测试设备上的Android应用程序永远不会通过此地址到达主机上的应用程序服务器。

  2. 您是否尝试使用运行应用程序服务器的主机的IP地址?

  3. 您的应用服务器是否接受远程连接?他在哪个界面听?

  4. 你的Android应用程序是否有权使用互联网并让你的测试设备或模拟器网络访问与应用程序服务器相同的网络?

  5. 您的代码是正确的,但您的设置已搞砸了;)

答案 1 :(得分:0)

到目前为止,人们所说的一切都是可能的,但没有人问过你是否在UI线程上运行网络调用。如果你是,你的应用程序因为潜在的挂断而无法工作,你会想要查看AsyncTasks来解决你的问题。