在OkHttp Java中创建承载授权标头

Ami*_*uei 6 java okhttp3

我需要在Java中使用OkHttp3作为HTTP客户端,并在请求中发送Authorization标头。

例:

授权:承载eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRaswczovL2F1dGgucGF4aW11bS5djb20iLCJhdWQiOiJodHRwczovL2FwaS5wYXhpbXVtLmNvbSIsIm5iZiI6MTQ0ODQzNzkyMCwiZXhwIjoxNDQ4NDgxMTIwLCJzdWIiOiIzNzExZDk1YS03MWU1LTRjM2ItOWQ1YS03ZmY3MGI0NDgwYWMiLCJyb2xlIjoicGF4OmIyYjphcHA6dXNlciJ9.YR8Gs7RVM-q5AxtHpeOl2zYe-zKxh5u39TUeTbiZL1k

如何使用我的用户名和密码创建此令牌?用户名:测试密码:test

小智 7

根据此处的文档

  private final OkHttpClient client = new OkHttpClient();
  private final String url = "http://test.com";

  public void run(String token) throws Exception {
    Request request = new Request.Builder()
    .url(url)
    //This adds the token to the header.
    .addHeader("Authorization", "Bearer " + token)
    .build();
     try (Response response = client.newCall(request).execute()) {
          if (!response.isSuccessful()){
             throw new IOException("Unexpected code " + response);
          }

         System.out.println("Server: " + response.header("anykey"));

     }
  }
Run Code Online (Sandbox Code Playgroud)

  • 小心。它应该是`.addHeader(“ Authorization”,“ Bearer” +令牌)`,否则会得到“ IllegalArgumentException:标头名称中意外的字符0x20”。 (7认同)
  • 谢谢Thankgod,OkHttp3库中有一个名为Credentials的Java类。它根据用户名和密码创建基本授权。如何从用户名和密码创建令牌? (2认同)

use*_*390 6

上面的答案导致正确的路径,但需要一些更改。

private  Response requestBuilderWithBearerToken(String userToken) throws IOException {
           OkHttpClient client = new OkHttpClient();
           Request request = new Request.Builder()
                   .url(YourURL)
                   .get()
                   .addHeader("cache-control", "no-cache")
                   .addHeader("Authorization" , "Bearer " + userToken)
                   .build();

           return  client.newCall(request).execute();
Run Code Online (Sandbox Code Playgroud)