【问题标题】:HTTP not working in Android 6.0 [duplicate]HTTP 在 Android 6.0 中不起作用 [重复]
【发布时间】:2016-02-23 11:12:05
【问题描述】:

更新到 Android 6.0 后,下面的代码不再工作了。我尝试了很多东西,有人知道如何解决这个问题吗?

我读到了一些关于 Apache HTTP Client Removal 的内容,它说你必须在 build.gradle 文件中添加一些东西,但我没有这个文件。

public static String CallService(String url, String soapAction, String envelope)
{
    getConnection = true;

    final DefaultHttpClient httpClient = new DefaultHttpClient();
    HttpParams params = httpClient.getParams();

    HttpConnectionParams.setConnectionTimeout(params, CONNECTION_TIMEOUT);
    HttpConnectionParams.setSoTimeout(params, TIMEOUT);

    HttpProtocolParams.setUseExpectContinue(httpClient.getParams(), true);


    HttpPost httppost = new HttpPost(url.trim()+ INHEADER_SERVER_PAGE_VALUE);
    httppost.setHeader(INHEADER_METHOD_NAME,  url + INHEADER_METHOD_VALUE);
    httppost.setHeader(INHEADER_HOST_NAME, INHEADER_HOST_VALUE);
    httppost.setHeader(INHEADER_CONTENT_TYPE_NAME, INHEADER_CONTENT_TYPE_VALUE);
    httppost.setHeader(INHEADER_USER_AGENT_NAME, INHEADER_USER_AGENT_VALUE);
    httppost.setHeader(INHEADER_SOAPACTION_NAME, soapAction);
    httppost.setHeader(INHEADER_AUTORIZATION_NAME, BASIC + authString);

    String responseString = "";
    try
    {
        String body = new String(envelope.getBytes("UTF-8"), "ISO-8859-1");
        HttpEntity entity = new StringEntity(body);
        httppost.setEntity(entity);
        ResponseHandler<String> rh = new ResponseHandler<String>(){
            public String handleResponse(HttpResponse response) throws ClientProtocolException, IOException{
                HttpEntity entity = response.getEntity();

                StringBuffer out = new StringBuffer();
                byte[] data = EntityUtils.toByteArray(entity);
                out.append(new String(data, 0, data.length, "ISO-8859-1"));
                return out.toString();
            }
        };
        responseString = httpClient.execute(httppost, rh);
        return responseString;
    }
    catch(Exception e){
        e.printStackTrace();
    }
    getConnection = false;
    return "";
}

【问题讨论】:

    标签: java android http android-6.0-marshmallow


    【解决方案1】:

    在 android 6.0 中不能使用 HttpPost 或 Httpclient。 Android 6.0 版本删除了对 Apache HTTP 客户端的支持。如果您的应用正在使用此客户端并针对 Android 2.3(API 级别 9)或更高版本,请改用 HttpURLConnection 类。

    【讨论】:

      猜你喜欢
      • 2017-03-08
      • 1970-01-01
      • 1970-01-01
      • 2018-06-15
      • 1970-01-01
      • 2016-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多