我正在查看示例和代码,但我没有看到任何实现。在这个阶段这是可能的吗?
发布于 2013-05-30 01:02:14
是的这是可能的。您需要重写Request.getHeaders()。我很懒,我使用了Spring for Android中的HttpHeaders和HttpAuthentication,但您可以只构建auth头文件并从方法中返回它。在getHeaders()中,可以返回基本身份验证的身份验证头。这是一个具有基本身份验证的示例请求。
public class GetUser extends Request<User> {
private static final String TAG = GetUser.class.getName();
private Response.Listener<User> mListener;
private ObjectMapper mMapper = new ObjectMapper();
public GetUser(Response.ErrorListener errorListener, Response.Listener<User> listener){
super(Method.GET, PoisUtils.BASE_URL + "/users", errorListener);
mListener = listener;
}
@Override
protected Response<User> parseNetworkResponse(NetworkResponse response) {
String jsonString = new String(response.data);
try {
User result = mMapper.readValue(jsonString, User.class);
return Response.success(result, getCacheEntry());
} catch (IOException e) {
Log.d(TAG, e.getMessage());
}
return null;
}
@Override
protected void deliverResponse(User response) {
mListener.onResponse(response);
}
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
return AuthUtils.buildAuthHeaders().toSingleValueMap();
}
}
下面是我如何构建auth头文件
public static HttpHeaders buildAuthHeaders(){
if(UserUtils.isUserLogged()){
HttpHeaders requestHeaders = new HttpHeaders();
User user = PoisApplication.get().getUser();
HttpAuthentication auth = new HttpBasicAuthentication(
user.getUsername(), user.getPassword());
requestHeaders.setAuthorization(auth);
return requestHeaders;
}
return null;
}
发布于 2013-09-24 19:32:39
对于那些不想使用Spring For Android的人来说,这里是如何做到这一点的。
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
HashMap<String, String> params = new HashMap<String, String>();
String creds = String.format("%s:%s","USERNAME","PASSWORD");
String auth = "Basic " + Base64.encodeToString(creds.getBytes(), Base64.DEFAULT);
params.put("Authorization", auth);
return params;
}
请注意,您可能必须使用Base64.NO_WRAP
而不是Base64.DEFAULT
才能正常工作。正如评论中指出的那样。
接口8+
发布于 2017-02-15 18:35:44
对于代理授权(如squid),请使用此标头:
String credentials = proxyUsername + ":" + proxyPassword;
String auth = "Basic " + Base64.encodeToString(credentials.getBytes(), Base64.NO_WRAP);
headers.put("Proxy-Authorization", auth);
https://stackoverflow.com/questions/16817980
复制相似问题