問題タブ [dart-http]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
dart - Dart http: 新しいアクセス トークンを取得した後に http.Request を再試行すると、「Bad state: Can't finalize a finalized Request」というメッセージが表示される
現在、Flutter の Web API にアクセスしようとしていますが、これには認証用の JWT アクセス トークンが必要です。アクセス トークンは、一定の時間が経過すると有効期限が切れます。
別の更新トークンを使用して、新しいアクセス トークンを要求できます。現在、このアクセス トークンの更新は、リクエストが 401 レスポンスを返すとすぐに実行されます。その後、失敗したリクエストを新しいアクセス トークンで再試行する必要があります。
この最後のステップに問題があります。http.BaseRequest
は一度しか送信できないようです。新しいトークンで http リクエストを再試行するにはどうすればよいですか?
dart http readmeで提案されているhttp.BaseClient
ように、認証動作を追加するためにのサブクラスを作成しました。ここに簡略化されたバージョンがあります:
dart - http ライブラリを使用して SocketException をキャッチする方法は?
この問題はすでに他の人によって指摘されています (ここなど)。原因はわかったかもしれませんが、上位http
ライブラリを使用する場合、まだ解決策が見つかりません。例えば:
SocketException
たとえば、ホストに到達できない場合(私の場合、間違ったホストIP)、スローされた a をキャッチする方法が見つかりません。を でラップするか、 を使用してみawait
ましtry/catch
たFuture.catchError
。
これは、例外のスタック トレースです。
dart - Flutter は、アセット フォルダーから自己署名証明書を追加します
私のサーバーは、HTTPS API を呼び出すときに自己署名証明書を提供します。フォルダーに証明書ファイルがあり、asset
そのパスを参照しましpubspec.yaml
た に証明書を渡し、SecurityContext
そのコンテキストを使用してHttpClient
. しかし、証明書を渡す方法が機能しSecurityContext
ていません。コードは次のとおりです。
にSecurityContext
は 2 つの方法があります
。1)useCertificateChain()
これはファイル パスを受け入れます。しかし、アセット フォルダー ('assets/raw/certificate.crt') 内のファイルのパスを指定すると、ファイルが見つかりませんと表示されます。
2)useCertificateChainBytes()
上記のコードはこのメソッドを使用しています。しかし、これにより(予期しないファイルの終わり)のようなエラーも発生します。
現時点での解決策
を使用してバイパスしていclient.badCertificateCallback = (X509Certificate cert, String host, int port)=> true;
ます。
しかし、証明書で動作させたい
flutter - 複数の API を要求し、SQLITE 複数のテーブルに保存する最適な方法
質問: sqlite に保存する方法は? 2 つの API データを 2 つのテーブルに保存する方法を教えてください。
データを取得してキャッシュに保存するための複数の API があります。現在、次のように1つずつ実行しています。
ボタンが押されました():
それは私のアプリを遅くします...だから私は@günter-zöchbauerのやり方をすることにしました。( https://stackoverflow.com/a/50028061/9139407 )しかし、SQLiteに複数のテーブルに保存する方法がわかりません。
storeAll()
使用済みFuture.wait
印刷はうまくいっています
現在のメソッドで使用する以下の 2 つのメソッド
storeRegister()
(データを取得してローカルに保存)
storeWquipmentReg()
方法