Android HttpClient.execute无法正常工作

时间:2015-07-23 20:09:08

标签: android http-post httpclient

我有一个AsyncTask如下:

@Override
protected ArrayList<String> doInBackground(String... params) {
    ArrayList<String> result=new ArrayList<>();
    try {

        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost(Constants.URL);
        // Add your data
        List<BasicNameValuePair> nameValuePairs = new ArrayList<BasicNameValuePair>(
                2);
        nameValuePairs.add(new BasicNameValuePair("id",params[0]));

        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs, "UTF-8"));

        // Execute HTTP Post Request
        HttpResponse response = httpclient.execute(httppost);

        HttpEntity httpEntity = response.getEntity();
        inputStream = httpEntity.getContent();

        // deal with response here
        ....


    } catch (Exception e) {
        Log.e("Debug", e + " " + e.getMessage());
    }

    return result;
}

但是,在Jellybean上,在运行应用程序一段时间后,代码只运行到httpclient.execute(httppost)并在那里停止。

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

试试这件事:

1.检查您的网络连接和服务器可用性。

2.检查您是否已将清单添加到您的清单。

<manifest xlmns:android...>
<uses-permission android:name="android.permission.INTERNET" />
<application ...
</manifest>

如果我在“一段时间后”没有误解,那么你说它永远不会成功,它总是停在那里。这可能是因为权限或您的网络连接,因为请求似乎没有返回。

如果它有时运行是,但不运行其他运行,我认为这必须归功于您的服务器端。

我建议您使用https://github.com/matessoftwaresolutions/AndroidHttpRestService

我保证会使用Android Studio文件夹结构推送新的提交。