1 year ago

#388608

test-img

Martin01478

RestTemplate vs Postman: Identical in Wireshark but only one works

I'm trying to recreate a request that works in Postman using a Spring RestTemplate. I've tried to make the requests identical, down to the fake "User-Agent" header, but for whatever reason the one from Postman returns 200 OK and the one from RestTemplate returns 301 Moved.

What could I possibly be doing wrong?

Both requests are below, "anonymized" by removing the urls and session cookie, both of which are identical - confirmed by copying one and searching the other.

This is the working request from Postman.

Frame 1541: 638 bytes on wire (5104 bits), 638 bytes captured (5104 bits) on interface en0, id 0
Transmission Control Protocol, Src Port: 51102, Dst Port: 80, Seq: 573, Ack: 840, Len: 572

Hypertext Transfer Protocol
    POST <removed> HTTP/1.1\r\n
    User-Agent: Java/17.0.2\r\n
    Accept: text/plain, application/json, application/*+json, */*\r\n
    Content-Type: application/x-www-form-urlencoded; charset=UTF-8\r\n
    Cookie: JSESSIONID="<removed>"\r\n
    Host: <removed>\r\n
    Connection: keep-alive\r\n
    Content-Length: 63\r\n
    \r\n
    [Full request URI: <removed>
    [HTTP request 2/2]
    [Prev request in frame: 1373]
    [Response in frame: 1596]
    File Data: 63 bytes
HTML Form URL Encoded: application/x-www-form-urlencoded
    Form item: "<removed>" = "<removed>"
        Key: <removed>
        Value: <removed>

This is the failing request using RestTemplate.

Frame 3365: 129 bytes on wire (1032 bits), 129 bytes captured (1032 bits) on interface en0, id 0
Transmission Control Protocol, Src Port: 51110, Dst Port: 80, Seq: 509, Ack: 1, Len: 63
[2 Reassembled TCP Segments (571 bytes): #3363(508), #3365(63)]
Hypertext Transfer Protocol
    POST <removed> HTTP/1.1\r\n
    User-Agent: Java/17.0.2\r\n
    Accept: text/plain, application/json, application/*+json, */*\r\n
    Content-Type: application/x-www-form-urlencoded;charset=UTF-8\r\n
    Cookie: JSESSIONID="<removed>"\r\n
    Host: <removed>\r\n
    Connection: keep-alive\r\n
    Content-Length: 63\r\n
    \r\n
    [Full request URI: <removed>
    [HTTP request 1/1]
    [Response in frame: 3377]
    File Data: 63 bytes
HTML Form URL Encoded: application/x-www-form-urlencoded
    Form item: "<removed>" = "<removed>"
        Key: <removed>
        Value: <removed>

spring

spring-boot

postman

wireshark

resttemplate

0 Answers

Your Answer

Accepted video resources