我使用cURL调用下面的URL

curl 'http://username:password@192.168.1.108/merlin/Login.cgi'

我得到了适当的回应

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

我从浏览器(直接打开链接)、postman 甚至NodeJs得到了同样的回应,

但在java中使用okhttp将get\u请求发送到此url时,我得到了响应代码401

我的okhttp java代码是

    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();
        }

Java相关问答推荐

如何专门保存数据而不显示在jTable中?

在Spring Boot中测试时出现SQL语法错误

基本时态运算的ISO-8601周数据表示法

给定Java枚举类,通过值查找枚举

Helidon 4和Http API

OpenGL ES 3.0-纹理黑色

我如何知道MediaDiscoverer何时完成发现介质?

通过Spring Security公开Spring Boot执行器端点

格式中的特定回录键-值对

如何让JVM在SIGSEGV崩溃后快速退出?

错误:不兼容的类型:Double不能转换为Float

如何在不作为类出现的表上执行原生查询?

如何在IntelliJ IDEA的Build.sbt中添加外部JAR文件?

如何对存储为字符串的大数字数组进行排序?

如何设计包含已知和未知键值对映射的Java类?

H2数据库仅支持%1个结果集?

为什么Instant没有从UTC转换为PostgreSQL的时区?

java.lang.NoSuchMethodError:';org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream$Builder org.apache.poi-poi-ooxml-5.2.4

获取月份';s在java中非UTC时区的开始时间和结束时间

Cucumber中第二个网页的类对象未初始化