具有身份验证的okhttp发布请求

问题描述 投票:0回答:1

我正在使用okhttp(4.4.0)Java库将发布请求发送到我创建的Web服务。此外,该Web服务需要基本身份验证,并且仅接受后期请求。该Web服务位于一个代理后面,该代理仅将https请求转发到端口8080上的http请求。我的代码如下:

    ...
    RequestBody formBody = new FormBody.Builder()
                        .add("foo", this.foo)
                        .add("bar", this.bar)
                        .build();

    Request request = new Request.Builder()
                        .url("https://localhost/myWebApp")
                        .addHeader("User-Agent", "OkHttp Bot")
                        .addHeader("Authorization", Credentials.basic("myUser", "myPwd"))
                        .post(formBody)
                        .build();
    try (Response response = client.newCall(request).execute()) {
      if (!response.isSuccessful()) {
        throw new IOException("Unexpected code " + response);
      }
      return response.body().bytes();
    } catch (IOException e) {
      e.printStackTrace();
    }
    ...

请求失败,出现以下错误:

Unexpected code Response{protocol=http/1.1, code=501, message=Not Implemented, url=https://localhost/myWebApp/}

该Web服务的'myWebApp'doGet方法被配置为发送501未实现状态消息。但是,当我执行请求后,不应调用doGet方法。

通过查看我的网络服务器的访问日志,我发现了以下内容:

    127.0.0.1 - - [30/Mar/2020:09:05:24 +0200] "POST /myWebApp HTTP/1.1" 302 -
    127.0.0.1 - myUser [30/Mar/2020:09:05:25 +0200] "GET /myWebApp/ HTTP/1.1" 501 1029

因此既有发布请求,也有获取请求。看起来首先是要尝试发送帖子正文(不进行身份验证?),然后是带有身份验证的get请求,但我的网络服务拒绝了该请求。

是否有办法让我满意?我想念什么吗?请帮助!

java post okhttp http-authentication
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.