我想为我所有的截击请求创建一个Auth头,我已经学会了如何创建一个覆盖请求类的getHeaders的头,但是我不能不时地在每个请求中更改它,我想使它成为一种静态的或全局的,我可以在任何地方更改它。以下是我到目前为止所做的尝试。
主要活动类
public class MainActivity extends AppCompatActivity {
RequestQueue requestQueue;
JsonObjectRequest jsonreq;
JSONObject object;
try{
requestQueue = Volley.newRequestQueue(MainActivity.this);
object=new JSONObject();
jsonreq=new JsonObjectRequest(Request.Method.POST, url, object, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
res=response.toString();
Log.d("log1","res : " + res);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d("log1","Error from response : " +error.networkResponse.statusCode);
}
}) {
//want to get rid of this function from here and create in a global scope so I can control its implementation everywhere
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String,String> params=new HashMap<String,String>();
params.put("Authorization","xxxxxxxx");
return params;
}
};
requestQueue.add(jsonreq);
}
catch (Exception e){
Log.d("log1","error from catch " + e);
return e.toString();
}
return res;
我尝试创建一个自定义类来扩展堆栈并重写执行请求。下面是名为GlobalHeaders的自定义堆栈类的代码
public class GlobalHeaders extends HurlStack {
String testing="xxxxxxxx";
@Override
public HttpResponse executeRequest(Request<?> request, Map<String, String> additionalHeaders) throws IOException, AuthFailureError {
Map<String, String> headers = request.getHeaders();
headers.put("Content-Type", "application/json; charset=utf-8");
headers.put("Authorization",testing);
return super.executeRequest(request, headers);
}
现在我不确定如何在我的主类中使用这个方法,在那里我添加了请求队列(jsonReq);我尝试了其他方法,我用我的自定义类覆盖Volley的请求类,但再次失败。请指出我如何使这项工作或任何其他方法。我是一个新的学习者Java和Android。
好吧,我试过了,这个解决方案似乎行得通。在这里发帖,所以它也可以帮助未来的人。
从Main活动中删除getHeader方法,因为当我使用下面的代码将其实例添加到请求中时,执行请求会被调用。
if(stack == null){
stack=new GlobalHeaders();
requestQueue=Volley.newRequestQueue(getApplicationContext(),stack);
requestQueue.add(jsonreq);
}
还需要更改executeRequest方法中的第一行,以满足以下空异常
Map<String, String> headers = new HashMap<>(additionalHeaders);
并保持return语句不变。
请问,凌空是否会自动将我的GET参数添加到URL?对我来说,它不起作用,所以在查找源代码时,我只是找不到任何对getParams方法的调用。。那么我应该自己建立URL吗?这一点都没有问题,我只是想,当有像getParams这样的方法时,它可以为我做到这一点:) 更新:下面是我的代码。。 实际上,params参数现在是冗余的
问题内容: 我想知道是否可以通过添加自定义信息来配置所有$ http请求标头。像config这样的东西: 但是对于所有$ http呼叫,我将使用不同的服务。我敢肯定有一个解决方案:D。谢谢 问题答案: 您可以创建一个拦截器来扩展标题:
故事 我用的是keycloak 6.0.1。我有一个领域有两种类型的用户:管理员和常规用户。我需要一个主题,可以区分他们之间,因为登录是不同的(3字段vs 2字段)。因此,我希望扩展提供程序FreeMarkerLoginFormsProvider以传递一个自定义参数。我正在使用keycloak部署器部署我的SPI。 Keycloak在部署时不幸引发异常: 我也尝试过模块方法,但得到一个NullPo
我们正在将我们的事件系统迁移到函数式编程模型。我们遵循了下一个“指南”,它对消费者非常有效,但使用StreamBridge的生产者没有正确创建消息。 我们有下一个错误: 我们正在使用< code > 2021 . 0 . 0 spring-cloud版本。 通过简单的配置: 这是我们的自定义,它用于我们所有的微服务,因此,保持消息的格式很重要: 我们还使用< code>StreamBridge来生
目前,我正在使用mrecestQueue.cancelAll(getActive())在一个片段中的on Stop方法,但显然,当我将手机从横向移动到纵向时,它仍然返回请求中的数据,但会导致崩溃,因为持有人数据泄露已经存在了。有什么如何正确处理的示例代码吗?
我试图使用Volley库向服务器发出一个JSONObject POST请求,该请求包含两个参数,一个对象(地址)和一个不同对象(租户)的列表。 当我尝试发出请求时,第一个参数(地址)在发送之前被截取格式化,服务器不接受该请求。 我的请求如下所示: 我的postPropertyJSONObject是这样创建的: convertAddressToJson()方法如下所示: 我尝试只是传递地址对象,但这