带有颤振的传送带 - 在本地运行 .net Web 应用程序时出现握手错误

Cul*_*tes 5 ssl android dart flutter

我正在使用Conveyor(一个 Visual Studio 2019 扩展)让我的 ASP.NET Core 可用于 android 模拟器。到目前为止,这一直很有效。我已经开发了 Xamarin 应用程序、UWP 应用程序,并且之前将它用于本机 Android 应用程序,它可以正常工作。但是在当前的 flutter 应用程序中,这不起作用。

Conveyor 确实提供了在 android 设备上安装证书的教程:https : //conveyor.cloud/Help/SSL

按照这些说明操作后,我可以正常加载网页:

有效证书安卓模拟器

这也已在 Windows(运行 Web 应用程序的机器)上完成,但这是由 Conveyor 扩展自动完成的,但是:

颁发的证书

我运行此 Dart 代码来调用 API:

未来登录(字符串电子邮件,字符串密码)异步{

var response = await http
    .post("$_url/login", body: {email: email, password: password});//_url= https://192.168.0.148:45455/api

if (response.statusCode == 200) {
  var token = LoginResult.fromJson(json.decode(response.body));
  _authToken = token.token;
  return token.token;
}
throw Exception(
    "Login failed: ${response.statusCode} body: ${response.body}");
Run Code Online (Sandbox Code Playgroud)

}

发生的异常:

HandshakeException (HandshakeException: Handshake error in client (OS Error: CERTIFICATE_VERIFY_FAILED: cannot get local issuer certificate(handshake.cc:354)))

请注意354数字与我之前在其他地方看到的错误不同。我真的找不到这些异常的具体错误编号。

flutter doctor似乎运行良好,不得不采取额外的步骤来解决许可证问题:

C:\>flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[?] Flutter (Channel stable, v1.12.13+hotfix.8, on Microsoft Windows [Version 10.0.18363.657], locale nl-NL)

[?] Android toolchain - develop for Android devices (Android SDK version 29.0.3)
[?] Android Studio (version 3.6)
[?] VS Code, 64-bit edition (version 1.42.1)
[?] Connected device (1 available)

• No issues found!
Run Code Online (Sandbox Code Playgroud)

已经发现相关问题:

  • /sf/answers/3805130941/这不仅为简单的发布请求添加了更多代码,我无法接受。我想坚持http.post()并避免任何代码解决方法。我不认为这是一个“解决方案”。
  • 我已经查看了所有相关的 github 问题,似乎没有一个很好的解决方案。大多数问题都在深入研究自签名证书,这些证书似乎与已经托管的服务器而不是本地主机更相关。我相信 Conveyor 应该已经解决了证书问题,但对于颤振似乎不正确。看到的问题:#50699#47262#37655#23045

最后一个包括使用IOClient. 同样在这里,我不认为这是解决方案。我宁愿找到一个完全避免任何代码调整的解决方案。所以我想重点是 Conveyor 正确调整它或正确运行 flutter 以接受来自 convoyer 的证书。

可以在下面flutter run --verbose找到整个日志。我看到 flutter 团队在每个 github 问题上都要求这样做,所以也许它可以解决任何问题。

[  +27 ms] executing: [C:\flutter\] git -c log.showSignature=false log -n 1 --pretty=format:%H
[  +70 ms] Exit code 0 from: git -c log.showSignature=false log -n 1 --pretty=format:%H
[        ] 0b8abb4724aa590dd0f429683339b1e045a1594d
[        ] executing: [C:\flutter\] git describe --match v*.*.* --first-parent --long --tags
[  +43 ms] Exit code 0 from: git describe --match v*.*.* --first-parent --long --tags
[        ] v1.12.13+hotfix.8-0-g0b8abb472
[   +8 ms] executing: [C:\flutter\] git rev-parse --abbrev-ref --symbolic @{u}
[  +45 ms] Exit code 0 from: git rev-parse --abbrev-ref --symbolic @{u}
[        ] origin/stable
[        ] executing: [C:\flutter\] git ls-remote --get-url origin
[  +40 ms] Exit code 0 from: git ls-remote --get-url origin
[        ] https://github.com/flutter/flutter.git
[  +78 ms] executing: [C:\flutter\] git rev-parse --abbrev-ref HEAD
[  +43 ms] Exit code 0 from: git rev-parse --abbrev-ref HEAD
[        ] stable
[ +100 ms] executing: C:\Users\USER\AppData\Local\Android\sdk\platform-tools\adb.exe devices -l
[  +25 ms] Exit code 0 from: C:\Users\USER\AppData\Local\Android\sdk\platform-tools\adb.exe devices -l
[        ] List of devices attached
           emulator-5554          device product:sdk_gphone_x86 model:Android_SDK_built_for_x86 device:generic_x86
           transport_id:1
[  +17 ms] C:\Users\USER\AppData\Local\Android\sdk\platform-tools\adb.exe -s emulator-5554 shell getprop
[  +54 ms] Artifact Instance of 'AndroidMavenArtifacts' is not required, skipping update.
[   +6 ms] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update.
[   +3 ms] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update.
[ +109 ms] Found plugin url_launcher at C:\flutter\.pub-cache\hosted\pub.dartlang.org\url_launcher-4.2.0+3\
[  +82 ms] Found plugin url_launcher at C:\flutter\.pub-cache\hosted\pub.dartlang.org\url_launcher-4.2.0+3\
[  +40 ms] Generating
C:\Users\USER\source\repos\P2PortfolioApp\P2PortfolioApp\android\app\src\main\java\io\flutter\plugins\GeneratedPluginReg
istrant.java
[  +46 ms] ro.hardware = ranchu
[  +32 ms] Using hardware rendering with device Android SDK built for x86. If you get graphics artifacts, consider
enabling
           software rendering with "--enable-software-rendering".
[  +17 ms] Launching lib\main.dart on Android SDK built for x86 in debug mode...
[   +7 ms] executing: C:\Users\USER\AppData\Local\Android\sdk\build-tools\29.0.3\aapt dump xmltree
C:\Users\USER\source\repos\P2PortfolioApp\P2PortfolioApp\build\app\outputs\apk\app.apk AndroidManifest.xml
[  +17 ms] Exit code 0 from: C:\Users\USER\AppData\Local\Android\sdk\build-tools\29.0.3\aapt dump xmltree
C:\Users\USER\source\repos\P2PortfolioApp\P2PortfolioApp\build\app\outputs\apk\app.apk AndroidManifest.xml
[   +2 ms] N: android=http://schemas.android.com/apk/res/android
             E: manifest (line=2)
               A: android:versionCode(0x0101021b)=(type 0x10)0x1
               A: android:versionName(0x0101021c)="1.0.0" (Raw: "1.0.0")
               A: android:compileSdkVersion(0x01010572)=(type 0x10)0x1c
               A: android:compileSdkVersionCodename(0x01010573)="9" (Raw: "9")
               A: package="com.example.p2portfolio" (Raw: "com.example.p2portfolio")
               A: platformBuildVersionCode=(type 0x10)0x1c
               A: platformBuildVersionName=(type 0x10)0x9
               E: uses-sdk (line=7)
                 A: android:minSdkVersion(0x0101020c)=(type 0x10)0x10
                 A: android:targetSdkVersion(0x01010270)=(type 0x10)0x1c
               E: uses-permission (line=14)
                 A: android:name(0x01010003)="android.permission.INTERNET" (Raw: "android.permission.INTERNET")
               E: application (line=22)
                 A: android:label(0x01010001)="p2portfolio" (Raw: "p2portfolio")
                 A: android:icon(0x01010002)=@0x7f080000
                 A: android:name(0x01010003)="io.flutter.app.FlutterApplication" (Raw:
                 "io.flutter.app.FlutterApplication")
                 A: android:debuggable(0x0101000f)=(type 0x12)0xffffffff
                 A: android:appComponentFactory(0x0101057a)="androidx.core.app.CoreComponentFactory" (Raw:
                 "androidx.core.app.CoreComponentFactory")
                 E: activity (line=28)
                   A: android:theme(0x01010000)=@0x7f0a0000
                   A: android:name(0x01010003)="com.example.p2portfolio.MainActivity" (Raw:
                   "com.example.p2portfolio.MainActivity")
                   A: android:launchMode(0x0101001d)=(type 0x10)0x1
                   A: android:configChanges(0x0101001f)=(type 0x11)0x40003fb4
                   A: android:windowSoftInputMode(0x0101022b)=(type 0x11)0x10
                   A: android:hardwareAccelerated(0x010102d3)=(type 0x12)0xffffffff
                   E: intent-filter (line=35)
                     E: action (line=36)
                       A: android:name(0x01010003)="android.intent.action.MAIN" (Raw: "android.intent.action.MAIN")
                     E: category (line=38)
                       A: android:name(0x01010003)="android.intent.category.LAUNCHER" (Raw:
                       "android.intent.category.LAUNCHER")
                 E: meta-data (line=45)
                   A: android:name(0x01010003)="flutterEmbedding" (Raw: "flutterEmbedding")
                   A: android:value(0x01010024)=(type 0x10)0x2
                 E: activity (line=49)
                   A: android:theme(0x01010000)=@0x01030007
                   A: android:name(0x01010003)="io.flutter.plugins.urllauncher.UrlLauncherPlugin$WebViewActivity" (Raw:
                   "io.flutter.plugins.urllauncher.UrlLauncherPlugin$WebViewActivity")
                   A: android:exported(0x01010010)=(type 0x12)0x0
[   +8 ms] executing: C:\Users\USER\AppData\Local\Android\sdk\platform-tools\adb.exe -s emulator-5554 shell -x logcat -v
time -t 1
[  +48 ms] Exit code 0 from: C:\Users\USER\AppData\Local\Android\sdk\platform-tools\adb.exe -s emulator-5554 shell -x
logcat -v time -t 1
[   +2 ms] --------- beginning of main
           03-08 12:13:03.586 E/GnssHAL_GnssInterface( 1764): gnssSvStatusCb: b: input svInfo.flags is 8
[   +8 ms] executing: C:\Users\USER\AppData\Local\Android\sdk\platform-tools\adb.exe version
[   +1 ms] executing: C:\Users\USER\AppData\Local\Android\sdk\platform-tools\adb.exe -s emulator-5554 logcat -v time -T
03-08 12:13:03.586
[  +44 ms] Android Debug Bridge version 1.0.41
           Version 29.0.6-6198805
           Installed as C:\Users\USER\AppData\Local\Android\sdk\platform-tools\adb.exe
[   +4 ms] executing: C:\Users\USER\AppData\Local\Android\sdk\platform-tools\adb.exe start-server
[  +63 ms] Building APK
[  +20 ms] Running Gradle task 'assembleDebug'...
[   +3 ms] gradle.properties already sets `android.enableR8`
[   +5 ms] Using gradle from C:\Users\USER\source\repos\P2PortfolioApp\P2PortfolioApp\android\gradlew.bat.
[   +7 ms] executing: C:\Program Files\Android\Android Studio\jre\bin\java -version
[ +101 ms] Exit code 0 from: C:\Program Files\Android\Android Studio\jre\bin\java -version
[   +4 ms] openjdk version "1.8.0_212-release"
           OpenJDK Runtime Environment (build 1.8.0_212-release-1586-b04)
           OpenJDK 64-Bit Server VM (build 25.212-b04, mixed mode)
[   +4 ms] executing: [C:\Users\USER\source\repos\P2PortfolioApp\P2PortfolioApp\android\]
C:\Users\USER\source\repos\P2PortfolioApp\P2PortfolioApp\android\gradlew.bat -Pverbose=true
-Ptarget=C:\Users\USER\source\repos\P2PortfolioApp\P2PortfolioApp\lib\main.dart -Ptrack-widget-creation=true
-Pfilesystem-scheme=org-dartlang-root -Ptarget-platform=android-x86 assembleDebug
[ +592 ms] Welcome to Gradle 5.6.2!
[   +2 ms] Here are the highlights of this release:
[   +1 ms]  - Incremental Groovy compilation
[   +3 ms]  - Groovy compile avoidance
[   +1 ms]  - Test fixtures for Java projects
[        ]  - Manage plugin versions via settings script
[   +1 ms] For more details see https://docs.gradle.org/5.6.2/release-notes.html
[+1184 ms] > Task :app:compileFlutterBuildDebug UP-TO-DATE
[   +3 ms] > Task :app:packLibsflutterBuildDebug UP-TO-DATE
[   +1 ms] > Task :app:preBuild UP-TO-DATE
[   +3 ms] > Task :app:preDebugBuild UP-TO-DATE
[   +1 ms] > Task :url_launcher:preBuild UP-TO-DATE
[   +3 ms] > Task :url_launcher:preDebugBuild UP-TO-DATE
[   +1 ms] > Task :url_launcher:compileDebugAidl NO-SOURCE
[   +3 ms] > Task :app:compileDebugAidl NO-SOURCE
[   +1 ms] > Task :url_launcher:packageDebugRenderscript NO-SOURCE
[   +4 ms] > Task :app:compileDebugRenderscript NO-SOURCE
[   +1 ms] > Task :app:checkDebugManifest UP-TO-DATE
[   +2 ms] > Task :app:generateDebugBuildConfig UP-TO-DATE
[   +1 ms] > Task :app:cleanMergeDebugAssets
[   +1 ms] > Task :app:mergeDebugShaders UP-TO-DATE
[   +2 ms] > Task :app:compileDebugShaders UP-TO-DATE
[   +1 ms] > Task :app:generateDebugAssets UP-TO-DATE
[   +3 ms] > Task :url_launcher:mergeDebugShaders UP-TO-DATE
[  +56 ms] > Task :url_launcher:compileDebugShaders UP-TO-DATE
[   +2 ms] > Task :url_launcher:generateDebugAssets UP-TO-DATE
[   +3 ms] > Task :url_launcher:packageDebugAssets UP-TO-DATE
[   +1 ms] > Task :app:mergeDebugAssets
[ +292 ms] > Task :app:copyFlutterAssetsDebug
[   +2 ms] > Task :app:mainApkListPersistenceDebug UP-TO-DATE
[   +3 ms] > Task :app:generateDebugResValues UP-TO-DATE
[   +1 ms] > Task :app:generateDebugResources UP-TO-DATE
[   +1 ms] > Task :url_launcher:generateDebugResValues UP-TO-DATE
[   +2 ms] > Task :url_launcher:compileDebugRenderscript NO-SOURCE
[   +1 ms] > Task :url_launcher:generateDebugResources UP-TO-DATE
[   +2 ms] > Task :url_launcher:packageDebugResources UP-TO-DATE
[        ] > Task :app:mergeDebugResources UP-TO-DATE
[   +1 ms] > Task :app:createDebugCompatibleScreenManifests UP-TO-DATE
[        ] > Task :url_launcher:checkDebugManifest UP-TO-DATE
[  +81 ms] > Task :url_launcher:processDebugManifest UP-TO-DATE
[   +3 ms] > Task :app:processDebugManifest UP-TO-DATE
[   +3 ms] > Task :url_launcher:parseDebugLibraryResources UP-TO-DATE
[   +1 ms] > Task :url_launcher:generateDebugRFile UP-TO-DATE
[   +2 ms] > Task :app:processDebugResources UP-TO-DATE
[   +3 ms] > Task :url_launcher:generateDebugBuildConfig UP-TO-DATE
[   +2 ms] > Task :url_launcher:javaPreCompileDebug UP-TO-DATE
[   +1 ms] > Task :url_launcher:compileDebugJavaWithJavac UP-TO-DATE
[   +1 ms] > Task :url_launcher:bundleLibCompileDebug UP-TO-DATE
[  +86 ms] > Task :app:compileDebugKotlin UP-TO-DATE
[   +2 ms] > Task :app:javaPreCompileDebug UP-TO-DATE
[   +3 ms] > Task :app:compileDebugJavaWithJavac UP-TO-DATE
[   +1 ms] > Task :app:compileDebugSources UP-TO-DATE
[   +1 ms] > Task :app:processDebugJavaRes NO-SOURCE
[   +3 ms] > Task :url_launcher:processDebugJavaRes NO-SOURCE
[   +1 ms] > Task :url_launcher:bundleLibResDebug UP-TO-DATE
[   +3 ms] > Task :app:mergeDebugJavaResource UP-TO-DATE
[   +6 ms] > Task :url_launcher:bundleLibRuntimeDebug UP-TO-DATE
[   +4 ms] > Task :url_launcher:createFullJarDebug UP-TO-DATE
[   +1 ms] > Task :app:checkDebugDuplicateClasses UP-TO-DATE
[  +64 ms] > Task :app:desugarDebugFileDependencies UP-TO-DATE
[   +2 ms] > Task :app:mergeExtDexDebug UP-TO-DATE
[   +3 ms] > Task :app:transformClassesWithDexBuilderForDebug UP-TO-DATE
[   +1 ms] > Task :app:mergeDexDebug UP-TO-DATE
[   +1 ms] > Task :app:validateSigningDebug UP-TO-DATE
[   +1 ms] > Task :app:signingConfigWriterDebug UP-TO-DATE
[   +3 ms] > Task :app:mergeDebugJniLibFolders UP-TO-DATE
[   +1 ms] > Task :url_launcher:mergeDebugJniLibFolders UP-TO-DATE
[   +5 ms] > Task :url_launcher:mergeDebugNativeLibs UP-TO-DATE
[   +5 ms] > Task :url_launcher:stripDebugDebugSymbols UP-TO-DATE
[   +4 ms] > Task :url_launcher:transformNativeLibsWithIntermediateJniLibsForDebug UP-TO-DATE
[  +63 ms] > Task :app:mergeDebugNativeLibs UP-TO-DATE
[   +2 ms] > Task :app:stripDebugDebugSymbols UP-TO-DATE
[   +2 ms] Compatible side by side NDK version was not found.
[   +1 ms] > Task :app:packageDebug UP-TO-DATE
[        ] > Task :app:assembleDebug UP-TO-DATE
[        ] > Task :url_launcher:extractDebugAnnotations UP-TO-DATE
[        ] > Task :url_launcher:mergeDebugGeneratedProguardFiles UP-TO-DATE
[   +2 ms] > Task :url_launcher:mergeDebugConsumerProguardFiles UP-TO-DATE
[        ] > Task :url_launcher:prepareLintJarForPublish UP-TO-DATE
[   +2 ms] > Task :url_launcher:mergeDebugJavaResource UP-TO-DATE
[   +1 ms] > Task :url_launcher:transformClassesAndResourcesWithSyncLibJarsForDebug UP-TO-DATE
[        ] > Task :url_launcher:transformNativeLibsWithSyncJniLibsForDebug UP-TO-DATE
[        ] > Task :url_launcher:bundleDebugAar UP-TO-DATE
[        ] > Task :url_launcher:compileDebugSources UP-TO-DATE
[   +2 ms] > Task :url_launcher:assembleDebug UP-TO-DATE
[        ] BUILD SUCCESSFUL in 2s
[   +2 ms] 58 actionable tasks: 3 executed, 55 up-to-date
[ +350 ms] Running Gradle task 'assembleDebug'... (completed in 3,1s)
[  +30 ms] calculateSha: LocalDirectory:
'C:\Users\USER\source\repos\P2PortfolioApp\P2PortfolioApp\build\app\outputs\apk'/app.apk
[  +41 ms] calculateSha: reading file took 38us
[ +445 ms] calculateSha: computing sha took 443us
[   +7 ms] ? Built build\app\outputs\apk\debug\app-debug.apk.
[   +7 ms] executing: C:\Users\USER\AppData\Local\Android\sdk\build-tools\29.0.3\aapt dump xmltree
C:\Users\USER\source\repos\P2PortfolioApp\P2PortfolioApp\build\app\outputs\apk\app.apk AndroidManifest.xml
[  +21 ms] Exit code 0 from: C:\Users\USER\AppData\Local\Android\sdk\build-tools\29.0.3\aapt dump xmltree
C:\Users\USER\source\repos\P2PortfolioApp\P2PortfolioApp\build\app\outputs\apk\app.apk AndroidManifest.xml
[   +2 ms] N: android=http://schemas.android.com/apk/res/android
             E: manifest (line=2)
               A: android:versionCode(0x0101021b)=(type 0x10)0x1
               A: android:versionName(0x0101021c)="1.0.0" (Raw: "1.0.0")
               A: android:compileSdkVersion(0x01010572)=(type 0x10)0x1c
               A: android:compileSdkVersionCodename(0x01010573)="9" (Raw: "9")
               A: package="com.example.p2portfolio" (Raw: "com.example.p2portfolio")
               A: platformBuildVersionCode=(type 0x10)0x1c
               A: platformBuildVersionName=(type 0x10)0x9
               E: uses-sdk (line=7)
                 A: android:minSdkVersion(0x0101020c)=(type 0x10)0x10
                 A: android:targetSdkVersion(0x01010270)=(type 0x10)0x1c
               E: uses-permission (line=14)
                 A: android:name(0x01010003)="android.permission.INTERNET" (Raw: "android.permission.INTERNET")
               E: application (line=22)
                 A: android:label(0x01010001)="p2portfolio" (Raw: "p2portfolio")
                 A: android:icon(0x01010002)=@0x7f080000
                 A: android:name(0x01010003)="io.flutter.app.FlutterApplication" (Raw:
                 "io.flutter.app.FlutterApplication")
                 A: android:debuggable(0x0101000f)=(type 0x12)0xffffffff
                 A: android:appComponentFactory(0x0101057a)="androidx.core.app.CoreComponentFactory" (Raw:
                 "androidx.core.app.CoreComponentFactory")
                 E: activity (line=28)
                   A: android:theme(0x01010000)=@0x7f0a0000
                   A: android:name(0x01010003)="com.example.p2portfolio.MainActivity" (Raw:
                   "com.example.p2portfolio.MainActivity")
                   A: android:launchMode(0x0101001d)=(type 0x10)0x1
                   A: android:configChanges(0x0101001f)=(type 0x11)0x40003fb4
                   A: android:windowSoftInputMode(0x0101022b)=(type 0x11)0x10
                   A: android:hardwareAccelerated(0x010102d3)=(type 0x12)0xffffffff
                   E: intent-filter (line=35)
                     E: action (line=36)
                       A: android:name(0x01010003)="android.intent.action.MAIN" (Raw: "android.intent.action.MAIN")
                     E: category (line=38)
  

Sat*_*dde 5

跳过ssl认证问题的最佳方法。

class MyHttpOverrides extends HttpOverrides{
  @override
  HttpClient createHttpClient(SecurityContext context){
    return super.createHttpClient(context)
      ..badCertificateCallback = (X509Certificate cert, String host, int port)=> true;
    }
  }

void main(){
    HttpOverrides.global = new MyHttpOverrides();
    runApp(new MyApp());
}
Run Code Online (Sandbox Code Playgroud)


小智 0

你用过 requests 包吗?

https://pub.dev/packages/requests

这里是例子:

var r = await Requests.get('https://expired.badssl.com/', **verify: false**);
r.raiseForStatus();
Run Code Online (Sandbox Code Playgroud)