Reputation: 178
Any help would be appreciated! Or an idea for a better librarly to do a POST from Flutter Web with followRedirects = false
. Thanks!!
HttpClientRequest request = await HttpClient().postUrl(Uri.https("xyz.com:1000", "login"))..followRedirects = false;
var response = await request.close();
Gives (even if I remove ..followRedirects = false
)
Error: Unsupported operation: Platform._version
at Object.throw_ [as throw] (http://localhost:56880/dart_sdk.js:5331:11)
at Function._version (http://localhost:56880/dart_sdk.js:56165:17)
at Function.get version [as version] (http://localhost:56880/dart_sdk.js:56239:27)
at get _version (http://localhost:56880/dart_sdk.js:56109:27)
at Function.desc.get [as _version] (http://localhost:56880/dart_sdk.js:5836:17)
at Function.get version [as version] (http://localhost:56880/dart_sdk.js:56083:26)
at Object._getHttpVersion (http://localhost:56880/dart_sdk.js:197292:31)
at new _http._HttpClient.new (http://localhost:56880/dart_sdk.js:192274:28)
at Function.new (http://localhost:56880/dart_sdk.js:186732:16)
at login._LoginFormState.new.doLogin (http://localhost:56880/packages/webcargo_mobile/user/login.dart.lib.js:783:50)
at doLogin.next (<anonymous>)
at runBody (http://localhost:56880/dart_sdk.js:39049:34)
at Object._async [as async] (http://localhost:56880/dart_sdk.js:39080:7)
at login._LoginFormState.new.doLogin (http://localhost:56880/packages/webcargo_mobile/user/login.dart.lib.js:781:20)
at http://localhost:56880/packages/webcargo_mobile/user/login.dart.lib.js:775:20
at ink_well._InkResponseState.new.[_handleTap] (http://localhost:56880/packages/flutter/src/material/icon_button.dart.lib.js:50511:42)
at tap.TapGestureRecognizer.new.invokeCallback (http://localhost:56880/packages/flutter/src/gestures/recognizer.dart.lib.js:203:18)
at tap.TapGestureRecognizer.new.handleTapUp (http://localhost:56880/packages/flutter/src/gestures/tap.dart.lib.js:417:40)
at tap.TapGestureRecognizer.new.[_checkUp] (http://localhost:56880/packages/flutter/src/gestures/tap.dart.lib.js:223:12)
at tap.TapGestureRecognizer.new.handlePrimaryPointer (http://localhost:56880/packages/flutter/src/gestures/tap.dart.lib.js:169:23)
at tap.TapGestureRecognizer.new.handleEvent (http://localhost:56880/packages/flutter/src/gestures/recognizer.dart.lib.js:458:16)
at pointer_router.PointerRouter.new.[_dispatch] (http://localhost:56880/packages/flutter/src/gestures/pointer_router.dart.lib.js:103:9)
at http://localhost:56880/packages/flutter/src/gestures/pointer_router.dart.lib.js:138:26
at LinkedMap.new.forEach (http://localhost:56880/dart_sdk.js:26136:11)
at pointer_router.PointerRouter.new.[_dispatchEventToRoutes] (http://localhost:56880/packages/flutter/src/gestures/pointer_router.dart.lib.js:135:29)
at pointer_router.PointerRouter.new.route (http://localhost:56880/packages/flutter/src/gestures/pointer_router.dart.lib.js:127:37)
at binding$5.WidgetsFlutterBinding.new.handleEvent (http://localhost:56880/packages/flutter/src/gestures/binding.dart.lib.js:331:26)
at binding$5.WidgetsFlutterBinding.new.dispatchEvent (http://localhost:56880/packages/flutter/src/gestures/binding.dart.lib.js:314:24)
at binding$5.WidgetsFlutterBinding.new.dispatchEvent (http://localhost:56880/packages/flutter/src/rendering/layer.dart.lib.js:6087:13)
at binding$5.WidgetsFlutterBinding.new.[_handlePointerEventImmediately] (http://localhost:56880/packages/flutter/src/gestures/binding.dart.lib.js:285:14)
at binding$5.WidgetsFlutterBinding.new.handlePointerEvent (http://localhost:56880/packages/flutter/src/gestures/binding.dart.lib.js:258:43)
at binding$5.WidgetsFlutterBinding.new.[_flushPointerEventQueue] (http://localhost:56880/packages/flutter/src/gestures/binding.dart.lib.js:247:14)
at binding$5.WidgetsFlutterBinding.new.[_handlePointerDataPacket] (http://localhost:56880/packages/flutter/src/gestures/binding.dart.lib.js:237:65)
at Object.invoke1 (http://localhost:56880/dart_sdk.js:183501:7)
at _engine.EnginePlatformDispatcher.__.invokeOnPointerDataPacket (http://localhost:56880/dart_sdk.js:163995:15)
at _engine.PointerBinding.__.[_onPointerData] (http://localhost:56880/dart_sdk.js:164629:49)
at http://localhost:56880/dart_sdk.js:165081:26
at http://localhost:56880/dart_sdk.js:165034:16
at http://localhost:56880/dart_sdk.js:164733:11
Upvotes: 3
Views: 3769
Reputation: 90
If you want to make a post request (or any request) to a server that you own or some other rest API, then I could recommend that you use the HTTP library for Flutter.
Here is how I made a post request in my project.
import 'package:http/http.dart' as http;
and
Future check(String apiexten, Map <String,dynamic> json) async{
final http.Response response = await http.post('http://192.168.1.4:3000/$apiexten',
headers: <String,String>{
'Content-Type': 'application/json; charset=UTF-8',
},
body: jsonEncode(json));
return jsonDecode(response.body);
}
Just replace the url I am using with whatever you are using and you should be good.
Upvotes: 0
Reputation: 17123
dart:io
is not supported in Flutter web. You should have been getting a linter warning/error. Use the http
package.
To not follow redirects with the http
package, set the followRedirects
property to false.
//Construct the request
final req = Request('POST', Uri.https("xyz.com:1000", "login"));
//Set the body
req.body = ...;
//Disable redirects
req.followRedirects = false;
//Send request
final resp = await req.send();
//Handle response
final respStr = await resp.bytesToString();
Upvotes: 3