4

我找到了一个例子

try {
        String data = "YOUR REQUEST BODY HERE";
        //
        CredentialsProvider credProvider = new BasicCredentialsProvider();
        credProvider.setCredentials(new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT),
            new UsernamePasswordCredentials("YOUR USER NAME HERE", "YOUR PASSWORD HERE"));
        //
        DefaultHttpClient http = new DefaultHttpClient();
        http.setCredentialsProvider(credProvider);
        //
        HttpPut put = new HttpPut("YOUR HTTPS URL HERE");
        try {
            put.setEntity(new StringEntity(data, "UTF8"));
        } catch (UnsupportedEncodingException e) {
            Log.e(TAG, "UnsupportedEncoding: ", e);
        }
        put.addHeader("Content-type","SET CONTENT TYPE HERE IF YOU NEED TO");
        HttpResponse response = http.execute(put);
        Log.d(TAG, "This is what we get back:"+response.getStatusLine().toString()+", "+response.getEntity().toString());
    } catch (ClientProtocolException e) {
        //
        Log.d(TAG, "Client protocol exception", e);
    } catch (IOException e) {
        //
        Log.d(TAG, "IOException", e);
    }

但我必须以授权格式发送一个字符串:<Login>@<ID>:<Passsword>

这该怎么做?

4

2 回答 2

0

你应该先看看什么是 HTTP Basic:http ://en.m.wikipedia.org/wiki/Basic_access_authentication#section_3

您的问题不是针对 HTTP Basic 的,由于本质上不安全,因此根本不应该使用。

我认为您要求的内容应该是 URL 的一部分。即使使用 SSL 等额外措施,我仍然不会在 URL 中嵌入凭据。

HTTP Basic 定义了用户名和密码必须如何加密(实际上是散列)。没有办法拥有 HTTP 和您要求的格式。

于 2012-10-09T18:35:36.253 回答
0

您确定您的服务器确实在使用基本身份验证吗?如果是,您应该像这样设置凭据:

new UsernamePasswordCredentials("Login@ID", "Passsword");

否则检查实际的身份验证协议是什么并实现它(在标头中发送身份验证信息,或作为 URL 的一部分或作为 POST 参数等)

于 2012-10-10T02:36:29.860 回答