Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Can';t最后执行HTTP POST请求_Android_Http_Post - Fatal编程技术网

Android Can';t最后执行HTTP POST请求

Android Can';t最后执行HTTP POST请求,android,http,post,Android,Http,Post,我在开发我的第一个Android应用程序,在尝试发出HTTP POST请求和接收响应时遇到了一些大问题。以下是几个事实: 我在AndroidManifest.xml中具有INTERNET权限: 我尝试了很多解决办法。带有URLConnection或HttpURLConnection的解决方案不起作用,因为它们返回空字符串。使用HttpClient和HttpPost的解决方案在execute()上失败-我在Google上搜索了一个小时,但没有找到解决方法 有互联网连接。但我不知道如何解决我的问题

我在开发我的第一个Android应用程序,在尝试发出HTTP POST请求和接收响应时遇到了一些大问题。以下是几个事实:

  • 我在AndroidManifest.xml中具有INTERNET权限:
  • 我尝试了很多解决办法。带有URLConnection或HttpURLConnection的解决方案不起作用,因为它们返回空字符串。使用HttpClient和HttpPost的解决方案在execute()上失败-我在Google上搜索了一个小时,但没有找到解决方法
  • 互联网连接。但我不知道如何解决我的问题并最终发送HTTP POST请求
  • upd:例如,此代码使我的程序崩溃:

    public static APIResponse getResponse(String action, Map<String, String> params) throws IOException {
        // Create a new HttpClient and Post Header
        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost("http://google.com");
    
        try {
            // Add your data
            List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
            nameValuePairs.add(new BasicNameValuePair("id", "12345"));
            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
    
            // Execute HTTP Post Request
            HttpResponse response = httpclient.execute(httppost);
    
        } catch (ClientProtocolException e) {
            // TODO Auto-generated catch block
        } catch (IOException e) {
            // TODO Auto-generated catch block
        }
        return null;
    }
    
    公共静态APIResponse getResponse(字符串操作、映射参数)引发IOException{
    //创建一个新的HttpClient和Post头
    HttpClient HttpClient=新的DefaultHttpClient();
    HttpPost HttpPost=新的HttpPost(“http://google.com");
    试一试{
    //添加您的数据
    List nameValuePairs=新的ArrayList(2);
    添加(新的BasicNameValuePair(“id”,“12345”);
    setEntity(新的UrlEncodedFormEntity(nameValuePairs));
    //执行HTTP Post请求
    HttpResponse response=httpclient.execute(httppost);
    }捕获(客户端协议例外e){
    //TODO自动生成的捕捉块
    }捕获(IOE异常){
    //TODO自动生成的捕捉块
    }
    返回null;
    }
    
    UPD2:它在我的手机上工作,但在emulator上不工作!如何在emulator上修复该行为

    upd 3:已修复。

    查看

    您还应该使用来帮助调试HTTP消息


    另外请注意,您没有正确捕获所有异常。。。您可以在末尾添加一个通用catch语句,以防止应用程序崩溃,并帮助您找出问题所在。可能是超时或类似情况。

    首先,您可以将代码放在这里,以便人们可以帮助您解决问题,可能只是简单的URL编码或简单的客户端配置。完全重复:@TomDignan不,有一个GET there,该解决方案对我不起作用。我解决了我的问题。它在我的手机上工作,但在模拟器上崩溃。但是,有谁能帮我解决这个问题吗?我想在emulator上测试我的程序。您的评论表明您仍然存在崩溃问题。。。添加一个通用的excpetion捕获将防止这种情况发生。使用日志语句找出发生了什么。