如何在HTTP GET和POST请求的请求头中传递Token?
在HTTP GET/POST请求头中传递Token的实现方案
没问题!我来帮你梳理怎么在Java的HTTP请求头里传递Token,不管是GET还是POST请求都适用,先从你现有的GET代码说起,再补充POST的实现~
一、GET请求的Token传递
首先看你写的GET请求代码,整体思路是对的,但有个小细节需要注意:多数后端会遵循HTTP标准,使用Authorization头来接收Token,格式一般是Bearer <你的token值>;如果你的后端确实自定义了Authentication头来接收,那可以保留你原来的写法,否则建议改成标准写法。
优化后的GET请求代码示例:
if (api.method.equals("GET")) { try { // 拼接并编码URL(你已经处理了空格替换,这里保持逻辑) String fullUrl = SERVER_URL + api.toString() + URL.replaceAll(" ", "%20").trim(); HttpGet httpGet = new HttpGet(fullUrl); // 若后端要求GET请求也带Content-Type,就保留这行;否则可以去掉 httpGet.setHeader("Content-type", "application/json"); // 传递Token:标准写法(Bearer前缀+token值) httpGet.setHeader("Authorization", "Bearer mytokenvalue"); // 如果后端要求用自定义的Authentication头,就用这行: // httpGet.setHeader("Authentication", "mytokenvalue"); Log.d("REQUEST_URL", fullUrl); HttpResponse response = httpclient.execute(httpGet); return readStream(response.getEntity().getContent()); } catch (HttpHostConnectException e) { e.printStackTrace(); } catch (IOException e) { // 补充捕获IO异常,避免未处理的异常导致程序崩溃 e.printStackTrace(); } }
二、POST请求的Token传递(带JSON请求体)
如果需要发送POST请求并携带JSON格式的数据,同时在请求头里传递Token,实现逻辑和GET类似,只是需要构造JSON请求体:
if (api.method.equals("POST")) { try { String fullUrl = SERVER_URL + api.toString(); HttpPost httpPost = new HttpPost(fullUrl); // 必须设置Content-Type为application/json,告诉后端请求体是JSON格式 httpPost.setHeader("Content-type", "application/json"); // 同样传递Token,遵循标准格式 httpPost.setHeader("Authorization", "Bearer mytokenvalue"); // 构造JSON请求体(这里用JSONObject示例,你可以根据实际需求修改) JSONObject jsonRequestBody = new JSONObject(); jsonRequestBody.put("username", "testUser"); jsonRequestBody.put("password", "testPass"); // 将JSON字符串转为请求实体,指定UTF-8编码避免乱码 StringEntity requestEntity = new StringEntity(jsonRequestBody.toString(), StandardCharsets.UTF_8); httpPost.setEntity(requestEntity); HttpResponse response = httpclient.execute(httpPost); return readStream(response.getEntity().getContent()); } catch (JSONException | IOException e) { e.printStackTrace(); } }
几个关键注意点
- Token格式匹配:一定要和后端约定好格式,如果后端要求
Bearer前缀,就必须加上;如果是直接传递Token字符串,就去掉前缀。 - 异常处理:你的原代码只捕获了连接异常,建议补充捕获
IOException、JSONException等可能出现的异常,保证程序的健壮性。 - GET请求的Content-Type:GET请求通常没有请求体,所以这个头不是必须的,如果后端没有明确要求可以去掉。
内容的提问来源于stack exchange,提问作者Sawariya
相关产品推荐
相关产品推荐

