我希望使用Volley的库来包含Android响应中的标题。我知道还有其他工具,如OkHttp,Retrofit,Moshi,Picasso,这些工具有更多的文档(我认为Volley的一个缺点 - 很少有文档)。然而,我已经花了很多时间。
我只是想将一个curl --include -X POST -d ...请求翻译成android。
到目前为止,我有POST工作,但没有--include(https://www.itsalif.info/content/android-volley-tutorial-http-get-post-put的有用教程):
public class HTTPService {
public static void makeRequest(Context context) {
RequestQueue queue = Volley.newRequestQueue(context);
Response.Listener responseListener = new Response.Listener<String>() {
@Override
public void onResponse(String response) {
if (response!=null){
Log.d("Response", response);
Log.d("Response", Integer.toString(response.length()));
}
}
};
Response.ErrorListener errorListener = new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// error
String response = "Error";
Log.d("Error.Response", error.toString());
}
};
String url = "http://httpbin.org/post";
StringRequest postRequest = new StringRequest(Request.Method.POST, url, responseListener, errorListener) {
@Override
protected Map<String, String> getParams() {
Map<String, String> params = new HashMap<String, String>();
params.put("name", "John");
params.put("domain", "https://www.facebook.com");
return params;
}
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
return super.getHeaders();
}
};
queue.add(postRequest);
}
}
我已经展示了getHeaders函数来说明这不是我想要的。这是为您的数据添加标题。我想在响应对象中包含HTTP标头。
我发现的两个链接应该描述如何执行此操作:
1)https://developer.android.com/training/volley/request-custom.html
但是我在这一点上感到非常困惑,并且......有人能提供有效的解决方案吗?或者告诉我他们如何处理curl -i / - include命令?
答案 0 :(得分:0)
在谷歌上搜索,我只看到来自Volley的Response parseNetworkResponse(NetworkResponse response)功能的访问头信息(如--include)的方法。以下内容来自用户thedude在OWL 2 QL的答案。
public final class TokenHandler {
private TokenHandler() {}
private static String token = "";
public static void setToken(String newToken) {
if (newToken != null)
token = newToken;
}
public static String getToken() {
return token;
}
}
因为这是一个静态上下文,我发现存储信息的唯一方法是作为另一个类的公共变量。来自thedude的答案使用了TokenHandler.java类:
TBB