Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

[HttpClient] Adding DataPart to manually set the Content-Type #20960

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: 6.4
Choose a base branch
Loading
from
Open
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
[Form] Adding DataPart to manually set the Content-Type
  • Loading branch information
ThomasLandauer authored May 13, 2025
commit aa84c7d4673f5523f135ebbf4b34f04172edae3f
9 changes: 9 additions & 0 deletions 9 http_client.rst
Original file line number Diff line number Diff line change
Expand Up @@ -665,6 +665,15 @@
$formData->getParts(); // Returns two instances of TextPart both
// with the name "array_field"

Usually, the ``Content-Type`` of each form's part is detected automatically. However,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Asking because I don't know much about this. When you say this:

Usually the content type [...] is detected automatically.

When is not detected? I want to better understand the scenarios where the reader needs to use this explicit content type definition.

Thanks.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When is not detected?

Actually, I'm not sure if it's actually detected at all ;-) I just had the requirement to post to an external API as multipart/form-data, but with one of those parts being JSON (application/json), and this here was the way to make it work.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If you have some time to dig into this, could you please check the exact code behavior so we can updat the documentation accordingly? Thanks a lot!

you can override it by passing a ``DataPart``::

use Symfony\Component\Mime\Part\DataPart;

$formData = new FormDataPart([
['json_data' => new DataPart(json_encode($json), null, 'application/json')]
];

Check failure on line 675 in http_client.rst

View workflow job for this annotation

GitHub Actions / Code Blocks

[PHP syntax] Syntax error, unexpected ';', expecting ')'

By default, HttpClient streams the body contents when uploading them. This might
not work with all servers, resulting in HTTP status code 411 ("Length Required")
because there is no ``Content-Length`` header. The solution is to turn the body
Expand Down
Loading
Morty Proxy This is a proxified and sanitized view of the page, visit original site.