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参数,等等)