当前位置: 首页 > 知识库问答 >
问题:

Android使用apache发布和获取数据

骆嘉石
2023-03-14

我已经引用了这个... Android HttpClient、DefaultHttpClient、HttpPost、http://www.androidsnippets.com/executing-a-http-post-request-with-httpclient和http://www.javacodegeeks.com/2013/06/android-apache-http-client.html链接...他们指定传递url,但没有指定传递参数...当我实现上面url中给出的代码时,我得到了这个错误...我是新来的...我调用这个方法...

   public void postData() {
    String res="";
    // Create a new HttpClient and Post Header
    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost(url);

    try {
        // Add your data
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
        nameValuePairs.add(new BasicNameValuePair("username", ""));
        nameValuePairs.add(new BasicNameValuePair("email", ""));
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

        // Execute HTTP Post Request
        HttpResponse response = httpclient.execute(httppost);
        Log.e("response",""+response);


    } catch (ClientProtocolException e) {
        // TODO Auto-generated catch block
    } catch (IOException e) {
        // TODO Auto-generated catch block
    }

} 

请帮帮我...谢谢...

共有1个答案

翟嘉志
2023-03-14

由于您没有包含错误,我会认为这是因为您正在阻止UI线程,该线程在旧版本的Android上工作正常,但在最新版本中,您将必须使用AsyncTask来执行您的发布请求。

private class MyPostTask extends AsyncTask<URL, Void, Void> {
     protected Long doInBackground(URL... urls) {
         String res="";
        // Create a new HttpClient and Post Header
        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost(urls.get(0));

        try {
            // Add your data
            List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
            nameValuePairs.add(new BasicNameValuePair("username", ""));
            nameValuePairs.add(new BasicNameValuePair("email", ""));
            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

            // Execute HTTP Post Request
            HttpResponse response = httpclient.execute(httppost);
            Log.e("response",""+response);


        } catch (ClientProtocolException e) {
            // TODO Auto-generated catch block
        } catch (IOException e) {
            // TODO Auto-generated catch block
        }
     }

     protected void onProgressUpdate(Integer... progress) {
         setProgressPercent(progress[0]);
     }

     protected void onPostExecute(Long result) {
         showDialog("Downloaded " + result + " bytes");
     }
 }

以提出请求:

new MyPostTask().execute("http://example.com/foo/bar/");
 类似资料:
  • 问题内容: 如何在Android上的SQLite数据库中获取布尔字段的值? 我通常使用,等获取字段的值,但似乎没有方法。 问题答案: 它是:

  • 问题内容: 我是golang的新手,熟悉http包。我在获取使用邮递员发送的邮政数据时遇到麻烦。 是我的URI。我正在传递键:值:使用表单数据。我尝试了以下方法 但是这些方法都不起作用。我得到的回应是空洞的。 以下是我的代码: 当我打印要求时,我得到以下信息: 解决方案: 我找到了解决方案。既然,content-type是我解析表格的正确方法是使用http方法。 问题答案: 您使用的不正确。使用时

  • 我在Mac El Capitan上使用Android Studio。如何获取放行证书指纹?我需要火力点。我不确定到底怎么弄到它。

  • 我如何获得所有的发布组和发布日期的艺术家在一个电话与musicbraz api?我能做到这一点的最接近的方法是使用: 但是,有些发布组不存在。例如,使用上面的调用,“EP”、“单混音”和一些非官方版本都没有出现。基本上,我希望能够制作与musicbrainz相同的列表,当你进入艺术家的主页进行“所有”发行时: 此外,上面的api调用不返回发布日期。有什么建议吗?这些是虫子吗?报告此事的最佳地点是哪

  • 应用程序(Android): 在我运行这个应用程序的手机中,我嗅出了数据,我看到应用程序向服务器发送了一个请求,但数据包不包含json

  • 我正在尝试使用Hibernate以便从MySQL数据库中获取数据。为了实现这样一个目标,我创造了: > Hibernate配置文件: