You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository has been archived by the owner on Sep 26, 2022. It is now read-only.
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:
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):
Thank you so much for reporting this issue! I have been banging my head for the last couple of days on the issue why my oauth2 flow would not complete. It was because the code exchange fails on Android, which is a form-urlencoded POST request.
Fixing the data from a string to an object does the trick. Again, thank you!
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 thedata
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:
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):
Smartphone (please complete the following information):
Additional context
Relevant Swift code:
http/ios/Plugin/CapacitorUrlRequest.swift
Line 100 in 3aca516
Relevant Java code:
http/android/src/main/java/com/getcapacitor/plugin/http/CapacitorHttpUrlConnection.java
Line 193 in 3aca516
Clearly the workaround here is to just pass an object, but fixing this would save folks time!
The text was updated successfully, but these errors were encountered: