为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