multipart/form-data L'autre jour, j'ai implémenté le traitement de la communication en utilisant HttpURLConnection de Java. Parmi eux, j'ai fait une partie qui peut être envoyée universellement au format multipart / form-data, mais pour une raison quelconque, elle n'est pas reconnue comme une demande de multipart / form-data quel que soit le nombre de fois qu'elle communique, et cela prend un temps considérable pour le résoudre. Je l'ai dépensé.
La cause est très ridicule, y a-t-il quelqu'un d'autre qui en soit accro? C'était comme ça, mais j'aimerais l'écrire sous forme de mémorandum.
Au fait, quand je l'ai écrit pour la première fois, c'était la cause.
Le général est comme ça. Le contenu assemblé dans le format suivant est mis sur le corps et communiqué.
multipart/form-corps de données
--[Corde de délimitation]
Content-Disposition: form-data; name="[Nom de forme]"
<<Contenu du formulaire>>
--[Corde de délimitation]
Content-Disposition: form-data; name="[Nom de forme]"; filename="[nom de fichier]"
Content-Type: text/plain
<<Contenu du fichier>>
--[Corde de délimitation]
・
・
・
Continue autant que tu envoies
・
・
・
--[Corde de délimitation]--
Écrivez le Content-Type de l'en-tête de la demande après multipart / form-data et la chaîne Boundary après le Content-Type. Le code de saut de ligne doit être CRLF.
En regardant le corps de la demande envoyée, il n'y a aucun signe de malentendu par rapport au format ci-dessus, et il ne fait aucun doute que la spécification de limite de Content-Type dans l'en-tête de la demande est correcte. Hmm?
Si vous communiquez depuis Postman au format de données de formulaire et comparez-le avec une demande qui est normalement reconnue,
multipart/form-corps de données
--[Corde de délimitation]
Le premier "-" manquait. .. Au début, je n'étais pas très familier avec le mécanisme de multipart / form-data, donc je l'ai fait en me référant aux sites sur le net, mais sur divers sites en tant que chaînes de caractères Boundary "-------- chaînes de caractères aléatoires" Parce que c'était une spécification comme, j'en ai appris et j'ai spécifié la chaîne de caractères avec "--------" au début, et il y avait un manque de reconnaissance qu'un "-" séparé était nécessaire au début. C'était parce qu'il était difficile de confirmer s'il avait effectivement été supprimé. (C'est une histoire pour lire correctement RFC.)
Au fait, le dernier délimiteur doit avoir un "-" derrière! (Rappel)
La croyance est effrayante.
Écrivez-le pour que personne ne soit coincé avec un contenu similaire. (Y a-t-il une telle personne?)
À propos, les sites suivants sont recommandés lors du test de la communication HTTP. Communication facile car il existe des points de terminaison qui renvoient des informations sur les demandes envoyées par GET ou POST sous la forme de JSON, des réponses binaires et divers autres points de terminaison sont disponibles. Vous pouvez également tester la communication assez fermement à partir de la confirmation du contenu.
Si vous ne le connaissez pas, veuillez l'utiliser. Faire des progrès. httpBin: https://httpbin.org/