代码之家  ›  专栏  ›  技术社区  ›  Slacker

如何使用Spring的WebClient发送带有自定义标题的删除请求?

  •  1
  • Slacker  · 技术社区  · 7 年前

    我想发送一个带有自定义头的http删除请求。

    我尝试使用Spring的WebClient实现这一点,代码如下:

    @Test
    public void validateDeleteCouldCarryHeader() {
        WebClient.create("https://jira.spring.io/")
                .delete()
                .header("X-FOO", "BAR")
                .retrieve()
                .bodyToMono(Map.class)
                .block();
    }
    

    我期待着这样的事情:

    DELETE / HTTP/1.1
    X-FOO: BAR 
    ...
    content-length: 0
    

    DELETE / HTTP/1.1
    user-agent: ReactorNetty/0.7.0.RELEASE
    host: jira.spring.io
    accept: */*
    accept-encoding: gzip
    content-length: 0
    

    X-FOO

    缺少的标题仍然缺少:

    DELETE / HTTP/1.1
    user-agent: ReactorNetty/0.7.3.RELEASE
    host: jira.spring.io
    accept: */*
    accept-encoding: gzip
    content-length: 0
    2018-12-28 22:32:32.813 DEBUG 12064 --- [ctor-http-nio-4] r.ipc.netty.http.client.HttpClient       : [id: 0x2c6a9cea, L:/172.17.1.131:54532 - R:jira.spring.io/35.199.60.33:443] WRITE: 138B
            +-------------------------------------------------+
            |  0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f |
    +--------+-------------------------------------------------+----------------+
    |00000000| 44 45 4c 45 54 45 20 2f 20 48 54 54 50 2f 31 2e |DELETE / HTTP/1.|
    |00000010| 31 0d 0a 75 73 65 72 2d 61 67 65 6e 74 3a 20 52 |1..user-agent: R|
    |00000020| 65 61 63 74 6f 72 4e 65 74 74 79 2f 30 2e 37 2e |eactorNetty/0.7.|
    |00000030| 33 2e 52 45 4c 45 41 53 45 0d 0a 68 6f 73 74 3a |3.RELEASE..host:|
    |00000040| 20 6a 69 72 61 2e 73 70 72 69 6e 67 2e 69 6f 0d | jira.spring.io.|
    |00000050| 0a 61 63 63 65 70 74 3a 20 2a 2f 2a 0d 0a 61 63 |.accept: */*..ac|
    |00000060| 63 65 70 74 2d 65 6e 63 6f 64 69 6e 67 3a 20 67 |cept-encoding: g|
    |00000070| 7a 69 70 0d 0a 63 6f 6e 74 65 6e 74 2d 6c 65 6e |zip..content-len|
    |00000080| 67 74 68 3a 20 30 0d 0a 0d 0a                   |gth: 0....      |
    +--------+-------------------------------------------------+----------------+
    

    DELETE / HTTP/1.1
    user-agent: ReactorNetty/0.7.9.RELEASE
    host: jira.spring.io
    accept: */*
    accept-encoding: gzip
    X-FOO: BAR
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   Brian Clozel    7 年前

    Reactor Netty 0.7.0.RELEASE现在已经很旧了,您应该升级到新版本。

    我试着复制这个,但是没有。

    设置的日志级别 reactor.ipc.netty.http.client.HttpClient 要“调试”,请执行以下操作:

    [reactor-http-nio-4] DEBUG reactor.ipc.netty.http.client.HttpClient - [id: 0x69202b84, L:/192.168.0.28:60880 - R:jira.spring.io/35.199.60.33:443] WRITE: 150B
             +-------------------------------------------------+
             |  0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f |
    +--------+-------------------------------------------------+----------------+
    |00000000| 44 45 4c 45 54 45 20 2f 20 48 54 54 50 2f 31 2e |DELETE / HTTP/1.|
    |00000010| 31 0d 0a 75 73 65 72 2d 61 67 65 6e 74 3a 20 52 |1..user-agent: R|
    |00000020| 65 61 63 74 6f 72 4e 65 74 74 79 2f 30 2e 37 2e |eactorNetty/0.7.|
    |00000030| 30 2e 52 45 4c 45 41 53 45 0d 0a 68 6f 73 74 3a |0.RELEASE..host:|
    |00000040| 20 6a 69 72 61 2e 73 70 72 69 6e 67 2e 69 6f 0d | jira.spring.io.|
    |00000050| 0a 61 63 63 65 70 74 3a 20 2a 2f 2a 0d 0a 61 63 |.accept: */*..ac|
    |00000060| 63 65 70 74 2d 65 6e 63 6f 64 69 6e 67 3a 20 67 |cept-encoding: g|
    |00000070| 7a 69 70 0d 0a 58 2d 46 4f 4f 3a 20 42 41 52 0d |zip..X-FOO: BAR.|
    |00000080| 0a 63 6f 6e 74 65 6e 74 2d 6c 65 6e 67 74 68 3a |.content-length:|
    |00000090| 20 30 0d 0a 0d 0a                               | 0....          |
    +--------+-------------------------------------------------+----------------+
    

    因此,客户机确实在发送这些头。也许您捕获传出请求信息的方式有问题?

    推荐文章