Skip to content
This repository was archived by the owner on Sep 26, 2022. It is now read-only.
This repository was archived by the owner on Sep 26, 2022. It is now read-only.

iOS and Android handle form-uurlencoded requests differently #270

@kito99

Description

@kito99

Describe the bug
iOS and Android handle form-uurlencoded requests differently. I believe the intent is to require the data property to be an object when making a the request, but that's not enforced on the JavaScript side. At the iOS layer, if the data property is a string, it's sent straight though; Android, on the other hand, expects it to be an object, and throws an exception if it's not.

To Reproduce
Make a call to Http.request() like so:

const response = await Http.request(
{
  "url":"https://foo.com",
  "method":"POST",
  "headers":{"Accept":"application/json","Content-Type":"application/x-www-form-urlencoded"},
  "data":"a=b&b=c&c=d"
}

Expected behavior
The behavior should be the same on both Android and iOS. If the intention is that form requests must have data specified as an object, then both platforms should throw an exception. Otherwise, both should expect a raw string.

Smartphone (please complete the following information):

  • Device: iPhone 11 Pro
  • OS: iOS 15.5
  • Browser [Capacitor web view]
  • Simulator

Smartphone (please complete the following information):

  • Device: Android Pixel 4
  • OS: API 30
  • Browser [Capacitor web view]
  • Simulator

Additional context

Relevant Swift code:

if let strVal = try? getRequestDataAsString(body) {

Relevant Java code:

Clearly the workaround here is to just pass an object, but fixing this would save folks time!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions