gpt4 book ai didi

java - Android HttpUrlConnection 不支持摘要身份验证?

转载 作者:行者123 更新时间:2023-12-01 06:24:01 26 4
gpt4 key购买 nike

  • 我想使用HTTPURLConnection来启用基于doc的android上支持的缓存。
  • 但是使用 HTTPURLConnection 时返回 401 responseCode

        String BASIC_AUTH = "Basic "
    + Base64.encodeToString((USER+":"+PASS).getBytes(),
    Base64.NO_WRAP);
    HttpURLConnection con = (HttpURLConnection) urlObj.openConnection();

    con.setConnectTimeout(CONNECT_TIMEOUT);
    con.setReadTimeout(READ_TIMEOUT);
    con.setRequestProperty("Authorization", BASIC_AUTH);
    // Enable cache
    con.setUseCaches(true);
    con.setRequestProperty("Content-Type", "application/json");
    con.setRequestProperty("Accept", "*/*");
    // add reuqest header
    con.setRequestMethod("GET");
    int responseCode = con.getResponseCode();
    Log.d("Response Code : ", responseCode + ""); // return 401
  • 使用 apache DefaultHttpClient 完美工作时。

        DefaultHttpClient httpClient = new DefaultHttpClient();
    httpClient.getCredentialsProvider().setCredentials(
    new AuthScope(null, -1),
    new UsernamePasswordCredentials(USER,PASS));

    HttpResponse httpResponse;
    HttpEntity httpEntity;
    String url = apiURL.getURL();
    // request method is GET
    String paramString = URLEncodedUtils.format(params, "utf-8");
    url += "?" + paramString;
    HttpGet httpGet = new HttpGet(url);
    httpGet.setHeader("Accept", "text/json");
    httpResponse = httpClient.execute(httpGet);
    httpEntity = httpResponse.getEntity();
  • 如何在 HTTPURLConnecion 上设置 Credentials 以像 apache DefaultHttpClient 一样工作的问题。

最佳答案

设置凭据的默认机制是使用Authenticator.setDefault,但它仅适用于基本身份验证。

Android 上的

HttpUrlConnection 尚不支持摘要,因此您必须实现 RFC2617靠你自己。

查看我的answer这里有关于如何做到这一点的摘要。

关于java - Android HttpUrlConnection 不支持摘要身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24412974/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com