我找到了一个例子
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>
怎么做?
答案 0 :(得分:0)
您应首先查看实际的HTTP Basic是什么:http://en.m.wikipedia.org/wiki/Basic_access_authentication#section_3
您的问题不是针对HTTP Basic,而是由于本身就不安全而根本不应该使用。
我认为你要求的内容应该是URL的一部分。即使使用SSL等其他措施,我仍然不会在网址中嵌入凭据。
HTTP Basic定义了如何加密用户名和密码(实际散列)。无法获得HTTP和您要求的格式。
答案 1 :(得分:0)
您确定您的服务器确实使用了基本身份验证吗?如果是,您应该设置如下凭据:
new UsernamePasswordCredentials("Login@ID", "Passsword");
否则检查实际的身份验证协议是什么并实现它(在标头中发送auth信息,或作为URL的一部分或作为POST参数等)。