为volley的http请求添加自定义request header

添加Request header 代码如下

import com.android.volley.AuthFailureError;
import com.android.volley.Response;
import com.android.volley.toolbox.StringRequest;

import java.util.LinkedHashMap;
import java.util.Map;

/**
 * 在Volley http请求中添加请求头
 * Created by dxb on 2017/6/1.
 */
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<>();
        // 自定义请求头 user-token:AEUHY98QIASUDH
        headers.put("user-token", "AEUHY98QIASUDH");
        return headers;
    }
}

如果发送的请求是JsonObjectRequest,那么此类继承自JsonObjectRequest。

 

 

测试代码:

1.服务端:

@RestController
public class TestRestController {

    private Logger logger = LoggerFactory.getLogger(this.getClass());

    @GetMapping("3")
    public String retIp(HttpServletRequest request, @RequestHeader("user-token") String token) {
        String remoteAddr = request.getRemoteAddr();
        logger.info("request.getRemoteAddr() = {}, token={}", remoteAddr, token);
        return remoteAddr + ":" + token;
    }

}

2.客户端:

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.widget.TextView;

import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.Volley;

import cn.dxbtech.dictationer.temp.StringRequestWithAuth;

public class MainActivity extends AppCompatActivity {
    private static final String TAG = "MainActivity";
    private TextView testTv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        testTv = (TextView) findViewById(R.id.testTv);
    }

    @Override
    protected void onStart() {
        super.onStart();

        RequestQueue queue = Volley.newRequestQueue(this);
        // 请求url
        String url = "http://192.168.1.165:8099/3";

        // 实例化请求
        StringRequestWithAuth jsonObjectRequest = new StringRequestWithAuth(Request.Method.GET, url, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                Log.i(TAG, "onResponse: response=" + response);
                testTv.setText("Response is: " + response);
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Log.e(TAG, "onErrorResponse: error=" + error.getMessage(), error);
            }
        });
        queue.add(jsonObjectRequest);
    }
}

 

运行结果

1.服务端:

2017-06-01 11:12:39.334  INFO 15400 --- [nio-8099-exec-1] cn.dxbtech.web.TestRestController        : request.getRemoteAddr() = 192.168.1.165, token=AEUHY98QIASUDH

2.客户端:

06-01 03:12:38.624 4021-4021/cn.dxbtech.dictationer I/MainActivity: onResponse: response=192.168.1.165:AEUHY98QIASUDH

 

posted @ 2017-06-01 11:15  Parasis  阅读(4878)  评论(0编辑  收藏  举报