Cannot add Content-Length header to a multipart part
I maintainer di solito rispondono entro 1 giorno
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 72/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- kotlin
- Ambito
- backend-api-design
Direzione di ricerca
Inizia da MultipartBody.Part.create e dal controllo che richiede Content-Length citato nell’issue, poi esamina i test multipart nelle vicinanze. Verifica come vengono gestiti gli header delle parti forniti manualmente per tipi multipart come multipart/mixed. Il lavoro è concluso quando la factory accetta l’header dove consentito e i test ne coprono il comportamento.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
In #7319 the Content-Length header ceased being auto-included in every multipart part. That is fine, but manually adding that header to a part throws an exception:
MultipartBody.Part.create(
headers = Headers.Builder().add("Content-Length", TEST_DATA.size.toString()).build(),
body = TEST_DATA.toRequestBody(),
) // crash - "Unexpected header: Content-Length"
The crash is due to this line in the MultipartBody.Part.create method:
require(headers?.get("Content-Length") == null) { "Unexpected header: Content-Length" }
I think that require was added because that header was being auto-included at the time. Since that is no longer the case but the require still exists, it's impossible to add a Content-Length header using the factory method.
I believe including Content-Length on a multipart part is out-of-spec if the request is of type multipart/form-data, but is within RFC specs for other types like multipart/mixed.
Tests showing it's not possible to manually include Content-Length: https://gist.github.com/jasonrobinson-gpsw/830a56b81be94a704fad9409d8326865
- Lingua principale
- Kotlin
- Stelle
- 47.1k
- Fork
- 9.3k
- Merge medio
- 1g 16h
- PR unite (30g)
- 31
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di lysine-dev/okhttp
-
enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
lysine-dev/okhttp#9761 · 3 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
build-ci
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
lysine-dev/okhttp#9815 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Consider `ForwardingRequestBody`Forse già presa @Amir-Golmoradi l’ha presa 4 giorni fa. Aperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 57/100
lysine-dev/okhttp#9800 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 25/100
lysine-dev/okhttp#9799 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 67/100
lysine-dev/okhttp#9796 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di lysine-dev/okhttp
Issue simili
-
documentation good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
jainam6610/calm-ui#11 ·
I maintainer di solito rispondono entro 1 giorno
-
area:sdk bug good first issue priority:medium
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
Kotlin-server-squad/vizcore#255 ·
I maintainer di solito rispondono entro 1 giorno
-
Toast NotificationsAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 64/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
open-learning-exchange/myplanet#18392 ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
Hy4ri/hermes-mobile#1697 ·
I maintainer di solito rispondono entro 1 giorno