无法使用HttpClient从Flutter Web进行POST [英] Can't POST from Flutter Web with HttpClient

查看:63
本文介绍了无法使用HttpClient从Flutter Web进行POST的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

任何帮助将不胜感激!或者是一个更好的主意,可以使用 followRedirects = false 从Flutter Web进行POST.谢谢!

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();

给予(即使我删除了 .. 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

Flutter网站不支持

推荐答案

dart:io .您应该已经收到了linter警告/错误.使用 http 包.

dart:io is not supported in Flutter web. You should have been getting a linter warning/error. Use the http package.

要不使用 http 包进行重定向,请设置 followRedirects 属性设置为false.

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();

这篇关于无法使用HttpClient从Flutter Web进行POST的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆