Mar*_*rco 3 java authentication android login certificate
我做了一个做httpGet的应用程序.
我的应用程序使用自己的证书,因此服务器需要用户登录.对于证书,我使用了本教程.
对于httpGet,我已经实现了这个实现:
HttpClient client = new CustClient(getApplicationContext()); // HttpClient that uses my certificates
// Example send http request
final String url = "https://ip:port/";// <--in my implementation i've a right url
HttpResponse response = null;
HttpGet httpGet = new HttpGet(url);
//login
httpGet.addHeader("Authorization", "Basic "+Base64.encodeToString("root:root".getBytes(),Base64.DEFAULT));
StringBuilder testo = null;
try {
response = client.execute(httpGet);
InputStream contenuto = response.getEntity().getContent();
BufferedReader rd = new BufferedReader(new InputStreamReader(contenuto));
String line;
// Read response until the end
while ((line = rd.readLine()) != null) {
testo.append(line);
}
} catch (Exception e) {
}
Run Code Online (Sandbox Code Playgroud)
为什么我使client.execute(httpGet)响应是 HTTP/1.1 400错误请求.为什么?在我的代码中进行身份验证是否正确?
Mar*_*rco 13
问题是Authorization标头.
我们必须使用:
httpGet.addHeader("Authorization", "Basic "+Base64.encodeToString("root:root".getBytes(),Base64.NO_WRAP));
Run Code Online (Sandbox Code Playgroud)
代替:
httpGet.addHeader("Authorization", "Basic "+Base64.encodeToString("root:root".getBytes(),Base64.DEFAULT));
Run Code Online (Sandbox Code Playgroud)
因为DEFAULT参数在字符串的末尾添加"CR"行终止符,如果你将它用于那个标题则它是不正确的.
| 归档时间: |
|
| 查看次数: |
3981 次 |
| 最近记录: |