ChuckerTeam / chucker

🔎 An HTTP inspector for Android & OkHTTP (like Charles but on device)
Apache License 2.0
3.96k stars 349 forks source link

body is empty in the Request Body even though the log shows the actual request body (see screenshot) #1171

Open mochadwi opened 9 months ago

mochadwi commented 9 months ago

:writing_hand: Describe the bug

Request Body shows body is empty in POST method with multipart/form-data

:bomb: Steps to reproduce

Go to chucker push notif dialog and click POST API, and see the Request tab. It shows body is empty instead.

:wrench: Expected behavior

It should display the actual request body.

:camera: Screenshots

Screen Shot 2024-01-30 at 5 53 03 PM Screen Shot 2024-01-30 at 5 26 00 PM

REQUEST: <https URL>
                                                                                                    METHOD: HttpMethod(value=POST)
                                                                                                    COMMON HEADERS
                                                                                                    -> Accept: application/json
                                                                                                    -> Accept-Charset: UTF-8
                                                                                                    -> Authorization: Bearer 871|JJ12tnumAFwAhZcJW6TPP3XrC0XUfSL2LAk37CV3f11443ce
                                                                                                    -> Connection: close
                                                                                                    CONTENT HEADERS
                                                                                                    -> Content-Length: 242
                                                                                                    -> Content-Type: multipart/form-data; boundary=46ba70a15370f0b-53c81418d4885d8-4995e411-7b761d8e-785e637348a0e64d-4b0
                                                                                                    BODY Content-Type: multipart/form-data; boundary=46ba70a15370f0b-53c81418d4885d8-4995e411-7b761d8e-785e637348a0e64d-4b0
                                                                                                    BODY START
                                                                                                    --46ba70a15370f0b-53c81418d4885d8-4995e411-7b761d8e-785e637348a0e64d-4b0
                                                                                                    Content-Disposition: form-data; name=full_name
                                                                                                    Content-Length: 20

                                                                                                    test sp m+1 asdfasdf
                                                                                                    --46ba70a15370f0b-53c81418d4885d8-4995e411-7b761d8e-785e637348a0e64d-4b0--

                                                                                                    BODY END
2024-01-30 17:19:46.490  5843-5918  KtorHttpLogger          com.bwc.forlance                     I  RESPONSE: 200 OK
                                                                                                    METHOD: HttpMethod(value=POST)
                                                                                                    FROM: <https URL>
                                                                                                    COMMON HEADERS
                                                                                                    -> access-control-allow-headers: Content-Type, Authorization
                                                                                                    -> access-control-allow-methods: POST, GET, OPTIONS
                                                                                                    -> access-control-allow-origin: *
                                                                                                    -> cache-control: no-cache, private
                                                                                                    -> connection: close
                                                                                                    -> content-type: application/json
                                                                                                    -> date: Tue, 30 Jan 2024 10:19:46 GMT
                                                                                                    -> server: Apache/2.4.54 (Ubuntu)
                                                                                                    -> transfer-encoding: chunked
                                                                                                    -> vary: Authorization
                                                                                                    -> x-android-received-millis: 1706609986486
                                                                                                    -> x-android-response-source: NETWORK 200
                                                                                                    -> x-android-selected-protocol: http/1.1
                                                                                                    -> x-android-sent-millis: 1706609986236
                                                                                                    -> x-ratelimit-limit: 60
                                                                                                    -> x-ratelimit-remaining: 57
                                                                                                    BODY Content-Type: application/json
                                                                                                    BODY START
                                                                                                    {"status":"success","message":"Service provider profile updated successfully"}
                                                                                                    BODY END

:iphone: Tech info

:page_facing_up: Additional context

lmk if you need me to create a sample project, because this large project, it takes while to remove confidential things.

cortinico commented 9 months ago

I believe that's because we don't support multi-part requests: https://github.com/ChuckerTeam/chucker/issues/1171

mochadwi commented 9 months ago

I believe that's because we don't support multi-part requests: #1171

I see that's explained everything, I thought that missing something in my part. Anything I can do to help or is it multipart support is already in the roadmap?

cortinico commented 9 months ago

I thought that missing something in my part. Anything I can do to help or is it multipart support is already in the roadmap?

Ideally, if you want to investigate adding multi-part support and send a PR, that would be really welcome