401 Unauthorized in Java

The server accepted the request shape but rejected your credentials or scheme. Paste your curl command to see what Java (OkHttp) would send and compare against the working request.

Quick answer

To convert a cURL command to Java, paste it into the Toolpaper workbench below. It parses the command in your browser and emits idiomatic Java code — headers, query string, request body, authentication (Bearer, Basic, API key), and cookies are all wired up automatically. No data is uploaded; conversion is fully client-side.

Prefer a different target? See the full cURL to Java reference, or jump to the same guide in JavaScript, Node.js, or Python.

InputcURL command
1 secret
MethodGET·Headers1·Body—· Chars 73
OutputJVM · OkHttp(modern JVM)
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

public class Main {
  public static void main(String[] args) throws Exception {
    OkHttpClient.Builder clientBuilder = new OkHttpClient.Builder();
    clientBuilder.followRedirects(false).followSslRedirects(false);
    OkHttpClient client = clientBuilder.build();
    Request.Builder rb = new Request.Builder().url("https://api.example.com/me");
    rb.method("GET", null);
    rb.header("Authorization", "Bearer YOUR_TOKEN");
    try (Response response = client.newCall(rb.build()).execute()) {
      System.out.println(response.body().string());
    }
  }
}
Inspect

Example

A representative curl command for this scenario. Paste your own above to convert an exact match.

curl input
curl https://api.example.com/me \
  -H "Authorization: Bearer YOUR_TOKEN"

Implementation notes

  • Double-check the Authorization header, ensure the token hasn't expired, and confirm the scheme (Bearer vs Basic vs API key) matches what the docs specify.
  • Use the Explain panel to enumerate exactly which headers, cookies, and TLS flags the curl request carries.
  • The In-browser Runner is a fast way to confirm whether the failure reproduces from the browser or only from the server.

Common mistakes

  • Comparing curl and Java without capturing both actual wire requests — mitmproxy or Charles pays off here.
  • Assuming a working curl means the API is happy — client differences (redirect handling, keep-alive, HTTP/2) surface as edge cases.
  • Silencing warnings instead of fixing them — every Java client has a way to log the outgoing request; turn it on.

Common questions

Why does curl work but Java fail?
Usually a header curl adds by default is missing in Java, or vice versa. Paste the curl above to see a normalized breakdown.
Is my request sent to Toolpaper?
No. Parsing and diffing run in your browser.

More guides in Java

Java hub →

The same guide in other languages

All guides →

Full Java reference on the cURL to Java hub, or open the main converter for all 18 targets.