Android上的基本身份验证

Android上的基本身份验证,android,basic-authentication,Android,Basic Authentication,我找到了一个例子 try { String data = "YOUR REQUEST BODY HERE"; // CredentialsProvider credProvider = new BasicCredentialsProvider(); credProvider.setCredentials(new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT),

我找到了一个例子

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);
    }
但是我必须以授权的格式发送一个字符串:
@:


如何做到这一点?

您应该先看看HTTP Basic实际上是什么:

您的问题不是针对HTTP Basic的,因为本质上是不安全的,所以根本不应该使用

我想你要的应该是URL的一部分。即使使用SSL等附加措施,我仍然不会在URL中嵌入凭据


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

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

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