android - 连接到未经授权的网址

标签 android connection http-get

尝试创建到 URL 的连接以检查最后的内容修改,使用创建的用户名/密码作为基本身份验证。返回的修改时间应与最后修改时间进行核对,并保存以供引用。如果修改时间较新(较高),则应下载其余内容。

我在尝试建立连接时遇到了授权问题。

这是我的做法:

我的登录名和密码:

String username = "haythem";
String key ="FU2ra88xuhuf6-#At+aseQub8f8ebr$sweh$thu!Ep?*frusAvEdRamuw9thubr";
String password = AeSimpleSHA1.SHA1(key + username);

我的 SHA1 代码:

public static String SHA1(String text) throws NoSuchAlgorithmException, UnsupportedEncodingException {
        MessageDigest md = MessageDigest.getInstance("SHA-1");
        md.update(text.getBytes("UTF-8"), 0, text.length());
        byte[] sha1hash = md.digest();
        return convertToHex(sha1hash);
    }

我的网络服务代码:

String mUrl = "http://app-vantage.appspot.com/api4/modified";
HttpGet request = new HttpGet(mUrl);
HttpParams params = new BasicHttpParams();
params.setParameter("Authorization",  "Basic " + android.util.Base64.encodeToString((username + ":" + password).getBytes(), android.util.Base64.DEFAULT));
params.setParameter("User-Agent", "SDKDemo/1.0");
request.setParams(params);

现在我收到 401 错误。

状态=401

<html><head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>401 UNAUTHORIZED</title>
/head>
<body text=#000000 bgcolor=#ffffff>
<h1>Error: UNAUTHORIZED</h1>
</body></html>

我不知道网络服务出了什么问题......

这是文档,我得到:

身份验证 阶段 1 需要使用基本身份验证通过 HTTPS。使用的基本身份验证是生成的用户名(生成类型 4 UUID)和作为密码的应用程序 key 加上作为 UTF-8 散列的用户名和 SHA-1 作为十六进制发送。例如,应用程序 key 为“abcd”,姓名为 1111-2222,数据为:

用户名:1​​111-2222 密码:SHA1(abcd1111-2222) = 970e1294ff2abd10d037ec73988646584bd8840e

因此: 身份验证:基本 MTExMS0yMjIyOjk3MGUxMjk0ZmYyYWJkMTBkMDM3ZWM3Mzk4ODY0NjU4NGJkODg0MGU=

最佳答案

有几件事立马跳了出来:

  1. 您正在尝试访问 URL http://app-vantage.appspot.com/api4/modified,但根据您的描述,您需要使用 https :

  2. 您的描述是“生成的用户名(生成类型 4 UUID)”(这意味着随机)。但是,您的用户名(“haythem”)似乎并不是特别随机。

    此外,您应该验证以下内容:

  3. 验证您的 convertToHex() 函数返回的大小写是否与服务器端预期的相同。如果您要生成大写字母的十六进制,而他们需要小写字母,有时会导致错误。

  4. 如果您碰巧有权访问服务器端,请尝试查看日志以了解发生了什么。

关于android - 连接到未经授权的网址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16095168/

相关文章:

java - 带有 Java 的 MySQL : Open connection only if possible

C++ HTTP GET 使用套接字

javascript - 获取或发布请求返回快速响应?

android - R.java 中的值在运行期间或运行之间是否会发生变化?

java - 在回收站 View 中快速管理点击不同的项目

unicode - Firebird 连接在路径中使用非 ASCII 字符

node.js - 无法使用 Node.js 连接到 MongoDB

javascript - 无法将 http 结果保存到范围

android - SDK :minSdkVersion 15 cannot be different than version L declared in library

java - 为什么按钮对象的行为会因声明位置的不同而不同