Home > Software engineering >  I got different results when call simple GET Request with curl and java okhttp
I got different results when call simple GET Request with curl and java okhttp

Time:05-24

I call below URL using cURL

curl 'http://username:[email protected]/merlin/Login.cgi'

and I get proper response

{ "Session" : "0xb3e01810", "result" : { "message" : "OK", "num" : 200 } }

I get the same response from browser (directly open link), postman and even with NodeJs,

but I get response code 401 when send GET_Request to this url using okhttp in java

my java code with okhttp is

    Request request = new Request.Builder()
                            .url("http://username:[email protected]/merlin/Login.cgi")
                            .build();

    try {
      com.squareup.okhttp.Response response = client.newCall(request).execute();
      System.out.println(response.code());
    } catch (IOException e) {
      e.printStackTrace();
    }

CodePudding user response:

Use basic authentication. Having username and password in the url, separated with :, is the same as basic authentication. I tested and it's ok. my snippet is:

OkHttpClient client = new OkHttpClient();
        Request request = new Request.Builder().url("http://192.168.1.108/merlin/Login.cgi")
                .header("Authorization", "Basic "   Base64.getEncoder().encodeToString("username:password".getBytes()))
                .get().build();

        try (Response response = client.newCall(request).execute()) {
            assert response.body() != null;
            String res = response.body().string();
        } catch (Exception e) {
            e.printStackTrace();
        }
  • Related