Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android截击-获取响应标题并读取html_Android_Android Volley - Fatal编程技术网

Android截击-获取响应标题并读取html

Android截击-获取响应标题并读取html,android,android-volley,Android,Android Volley,我找不到任何解决办法。到目前为止,我似乎必须在获取正常的html响应或仅获取响应头之间做出选择 有没有办法修改我的代码以获得这两种功能 当前代码(仅提供响应标题) StringRequest StringRequest=新的StringRequest(Request.Method.GET,loginURL, 新的Response.Listener(){ @凌驾 公共void onResponse(字符串响应){ 字符串responseSession=response.substring(0,re

我找不到任何解决办法。到目前为止,我似乎必须在获取正常的html响应或仅获取响应头之间做出选择

有没有办法修改我的代码以获得这两种功能

当前代码(仅提供响应标题)

StringRequest StringRequest=新的StringRequest(Request.Method.GET,loginURL,
新的Response.Listener(){
@凌驾
公共void onResponse(字符串响应){
字符串responseSession=response.substring(0,response.indexOf(“;”));
}
},
新的Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
Toast.makeText(LoginActivity.this,error.toString(),Toast.LENGTH_LONG.show();
}
}){
@凌驾
受保护的响应parseNetworkResponse(NetworkResponse NetworkResponse){
String sessionId=networkResponse.headers.get(“设置Cookie”);
com.android.volley.Response result=com.android.volley.Response.success(sessionId,
HttpHeaderParser.parseCacheHeaders(networkResponse));
返回结果;
}
};
RequestQueue RequestQueue=Volley.newRequestQueue(this);
添加(stringRequest);

为此使用自定义请求类

public class CustomStringRequest extends Request<CustomStringRequest.ResponseM> {


    private Response.Listener<CustomStringRequest.ResponseM> mListener;

    public CustomStringRequest(int method, String url, Response.Listener<CustomStringRequest.ResponseM> responseListener, Response.ErrorListener listener) {
        super(method, url, listener);
        this.mListener = responseListener;
    }


    @Override
    protected void deliverResponse(ResponseM response) {
        this.mListener.onResponse(response);
    }

    @Override
    protected Response<ResponseM> parseNetworkResponse(NetworkResponse response) {
        String parsed;
        try {
            parsed = new String(response.data, HttpHeaderParser.parseCharset(response.headers));
        } catch (UnsupportedEncodingException e) {
            parsed = new String(response.data);
        }

        ResponseM responseM = new ResponseM();
        responseM.headers = response.headers;
        responseM.response = parsed;

        return Response.success(responseM, HttpHeaderParser.parseCacheHeaders(response));
    }


    public static class ResponseM {
        Map<String, String> headers;
        String response;
    }

}
公共类CustomStringRequest扩展请求{
私人回应。倾听者;
公共CustomStringRequest(int方法、字符串url、Response.Listener-responseListener、Response.ErrorListener-Listener){
super(方法、url、侦听器);
this.mListener=responseListener;
}
@凌驾
受保护的void deliverResponse(ResponseM响应){
this.mListener.onResponse(response);
}
@凌驾
受保护的响应parseNetworkResponse(NetworkResponse响应){
字符串解析;
试一试{
parsed=新字符串(response.data,HttpHeaderParser.parseCharset(response.headers));
}捕获(不支持的编码异常e){
parsed=新字符串(response.data);
}
ResponseM ResponseM=新ResponseM();
responseM.headers=response.headers;
responseM.response=已解析;
返回Response.success(responseM,HttpHeaderParser.parseCacheHeaders(Response));
}
公共静态类响应{
地图标题;
字符串响应;
}
}
然后像这样修改代码

CustomStringRequest stringRequest = new CustomStringRequest(Request.Method.GET, loginURL,
                new Response.Listener<CustomStringRequest.ResponseM>() {
                    @Override
                    public void onResponse(CustomStringRequest.ResponseM result) {

                        //From here you will get headers
                        String sessionId = result.headers.get("Set-Cookie");
                        String responseString = result.response;

                    }


                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        Toast.makeText(LoginActivity.this,error.toString(),Toast.LENGTH_LONG ).show();
                    }
                }) {


        };
CustomStringRequest stringRequest=新的CustomStringRequest(Request.Method.GET,loginURL,
新的Response.Listener(){
@凌驾
public void onResponse(CustomStringRequest.ResponseM结果){
//从这里您将获得标题
String sessionId=result.headers.get(“设置Cookie”);
字符串responseString=result.response;
}
},
新的Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
Toast.makeText(LoginActivity.this,error.toString(),Toast.LENGTH_LONG.show();
}
}) {
};

你试过我的答案了吗?是的,效果很好。谢谢你的帮助。案件结案。放弃了投票权,但支持率太低,无法生效。
CustomStringRequest stringRequest = new CustomStringRequest(Request.Method.GET, loginURL,
                new Response.Listener<CustomStringRequest.ResponseM>() {
                    @Override
                    public void onResponse(CustomStringRequest.ResponseM result) {

                        //From here you will get headers
                        String sessionId = result.headers.get("Set-Cookie");
                        String responseString = result.response;

                    }


                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        Toast.makeText(LoginActivity.this,error.toString(),Toast.LENGTH_LONG ).show();
                    }
                }) {


        };