You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:44:01