未经授权连接到网址

hay*_*ssi 1 connection android http-get

Itry创建与URL的连接以检查上次内容修改,并将创建的用户名/密码作为基本身份验证.应使用上次修改时间检查返回的修改时间并存储以供参考.如果修改时间较新(较高),则应下载其余内容.

我尝试建立连接时遇到了自动化问题.

这是我做的:

我的登录和密码:

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

我的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);
    }
Run Code Online (Sandbox Code Playgroud)

我的网络服务代码:

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);
Run Code Online (Sandbox Code Playgroud)

现在我收到401错误.

status = 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>
Run Code Online (Sandbox Code Playgroud)

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

这是文档,我得到:

身份验证阶段1需要通过HTTPS进行基本身份验证.使用的基本身份验证是生成的用户名(生成类型4 UUID)和密码,应用程序密钥加上用户名UTF-8哈希,SHA-1作为十六进制发送.例如,应用程序密钥为"abcd"且确定名为1111-2222,数据为:

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

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

Vic*_*nin 5

有一些东西会立即跳出来:

  1. 您试图访问URL HTTP: //app-vantage.appspot.com/api4/modified,但根据您的描述,您需要使用HTTPS: .

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

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

  3. 验证您的convertToHex()函数是否返回与服务器端期望的相同的大小写.如果您使用大写字母生成十六进制并且它们期望使用小写字母,则有时会导致错误.

  4. 如果您碰巧有权访问服务器端,请尝试查看日志以查看正在发生的情况.