Volley添加http的header发送请求,referer

问题一:怎样添加volley的库呢?
方法一:到下面网站下载,然后按照我的关于mqtt的文章的操作方法。
git clone https://android.googlesource.com/platform/frameworks/volley
方法二:
1.点击build.gradle.kts(Module:app)
2.添加
dependencies {
    ... ...
    implementation("com.android.volley:volley:1.2.1")
}
3.点击编译,同时会出现syc ***什么的,再点击一下。

问题二:怎样使用volley的库呢?

我最近在网上看了一下获取股票实时数据的方法。网上说输入:http://hq.sinajs.cn/list=sz000001就可以看到实时数据。我下载了一个相关的代码,通过volley获取数据,结果显示请求失败。我在网页上输入这个网址,结果显示:Kinsoku jikou desu!

哎,不管做什么事情都会有很多鸟事,不管做什么产品都会有很多坑,从来都不会顺利。我查了很多网页,有的网页说添加referer,但是没有说其他了。我想怎么添加啊?找来找去,都没找到答案。没人说怎么添加,更没人说怎么在java的volley里面添加。还好,拥有超高理解能力的我,看了很多资料后,我凭空总结到一个方法:http请求数据包里面会有一堆头部数据,要在头部数据里面添加referer和对应的内容。后面我专门搜如何添加http头部的网页。我搜到java版本的添加user-token的方法。我根据我的理解把token改为referer,参数是http://hq.sinajs.cn/list=sz000001。毫无意外,不行。不过,我容易放弃,我就不是我了。我研究referer的作用的同时,我继续搜没法获取数据的文章。后面被我搜到《新浪行情无法接收的解决方法》这个网页。这个网页里面有:req_set(http::field::referer,"http://finance.sina.com.cn")。看到这个,然后再加上我上面的理解,我知道该怎么做了。下面我贴出代码。

       

    public class StringRequestWithAuth extends StringRequest {
        public StringRequestWithAuth(int method, String url, Response.Listener<String> listener, Response.ErrorListener errorListener) {
            super(method, url, listener, errorListener);
        }
        public StringRequestWithAuth(String url, Response.Listener<String> listener, Response.ErrorListener errorListener) {
            super(url, listener, errorListener);
        }
        @Override
        public Map<String, String> getHeaders() throws AuthFailureError {
            Map<String, String> headers = new LinkedHashMap<>();
            //这样添加头部信息,注意添加的网址。
            headers.put("referer", "https://finance.sina.com.cn"); 
            return headers;
        }
    }


    private void refreshView(){
        if(queue==null) {
            queue = Volley.newRequestQueue(this);
        }

         //使用自己定义的类StringRequestWithAuth,这个类继承了StringRequest
        StringRequest stringRequest = new StringRequestWithAuth(Request.Method.GET, idurl,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(final String response) {
                        runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                //...
                            }
                        });
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        //...
                    }
                });
        queue.add(stringRequest);
        queue.start();
    }

idurl = https://hq.sinajs.cn/list=sz000001 加了一个s。

runOnUiThread只是处理消息,跟volley没有关系。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值