使用 curl 和 java okhttp 调用简单的 GET 请求时,我得到了不同的结果
I got different results when call simple GET Request with curl and java okhttp
我在下面调用 URL 使用 cURL
curl 'http://username:password@192.168.1.108/merlin/Login.cgi'
我得到了正确的回应
{ "Session" : "0xb3e01810", "result" : { "message" : "OK", "num" : 200 } }
我从浏览器(直接打开 link)、postman 甚至使用 NodeJs 得到相同的响应,
但是在 java
中使用 okhttp 向 url 发送 GET_Request 时,我收到响应代码 401
我的 java 带有 okhttp 的代码是
Request request = new Request.Builder()
.url("http://username:password@192.168.1.108/merlin/Login.cgi")
.build();
try {
com.squareup.okhttp.Response response = client.newCall(request).execute();
System.out.println(response.code());
} catch (IOException e) {
e.printStackTrace();
}
使用基本身份验证。在 url 中包含用户名和密码,用 :
分隔,与基本身份验证相同。我测试了,没问题。我的片段是:
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();
}
我在下面调用 URL 使用 cURL
curl 'http://username:password@192.168.1.108/merlin/Login.cgi'
我得到了正确的回应
{ "Session" : "0xb3e01810", "result" : { "message" : "OK", "num" : 200 } }
我从浏览器(直接打开 link)、postman 甚至使用 NodeJs 得到相同的响应,
但是在 java
中使用 okhttp 向 url 发送 GET_Request 时,我收到响应代码 401我的 java 带有 okhttp 的代码是
Request request = new Request.Builder()
.url("http://username:password@192.168.1.108/merlin/Login.cgi")
.build();
try {
com.squareup.okhttp.Response response = client.newCall(request).execute();
System.out.println(response.code());
} catch (IOException e) {
e.printStackTrace();
}
使用基本身份验证。在 url 中包含用户名和密码,用 :
分隔,与基本身份验证相同。我测试了,没问题。我的片段是:
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();
}