簡體   English   中英

無法從 Prestashop API 檢索數據並顯示在 flutter 上

[英]Cant retrieve data from Prestashop API and display on flutter

我正在嘗試從 Prestashop 檢索數據並在 flutter 小部件上獲取數據。 這是代碼:但我得到了錯誤,如下所示。

我需要知道的是開始獲取 prestashop 數據並將其顯示到我的 flutter 應用程序等產品 - 訂單 - 我創建的客戶 Class 從 prestashop 獲取未來數據,操作將由平面按鈕給出,該按鈕應返回 Z466DEEC76ECDF5FCA6D38571F6324D5444。 鏈接是正確的,也是 prestashop 中的 Webservice 密鑰

import 'dart:async';

import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;

void main() {
  runApp(HomePage());
}

class HomePage extends StatefulWidget {
  @override
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  Future getData() async {
    http.Response response = await http
        .get('https://uibox.store/api/products/1?output_format=JSON', headers: {
      "Autorization": ('74R9CQC6SX6Y2P369DLZ73VFB9AB5LV1'),
      "Accept": "application/json",
    });
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        backgroundColor: Colors.blue,
        appBar: AppBar(
          centerTitle: true,
          backgroundColor: Colors.black,
          title: Text('TestAPI'),
        ),
        body: Container(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              Center(
                child: FlatButton(
                    color: Colors.white,
                    onPressed: () {
                      getData();
                    },
                    child: Text('Click here to get data')),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

這是我得到的錯誤

Error: XMLHttpRequest error.
    dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 266:20      get current
packages/http/src/browser_client.dart 84:22                                       <fn>
dart-sdk/lib/async/zone.dart 1450:54                                              runUnary
dart-sdk/lib/async/future_impl.dart 143:18                                        handleValue
dart-sdk/lib/async/future_impl.dart 696:44                                        handleValueCallback
dart-sdk/lib/async/future_impl.dart 725:32                                        _propagateToListeners
dart-sdk/lib/async/future_impl.dart 519:7                                         [_complete]
dart-sdk/lib/async/stream_pipe.dart 61:11                                         _cancelAndValue
dart-sdk/lib/async/stream.dart 1229:7                                             <fn>
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 324:14  _checkAndCall
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 329:39  dcall
dart-sdk/lib/html/dart2js/html_dart2js.dart 37204:58                              <fn>


    at Object.createErrorWithStack (http://localhost:34359/dart_sdk.js:4477:12)
    at Object._rethrow (http://localhost:34359/dart_sdk.js:37464:16)
    at async._AsyncCallbackEntry.new.callback (http://localhost:34359/dart_sdk.js:37458:13)
    at Object._microtaskLoop (http://localhost:34359/dart_sdk.js:37290:13)
    at _startMicrotaskLoop (http://localhost:34359/dart_sdk.js:37296:13)
    at http://localhost:34359/dart_sdk.js:32918:9

您需要像這樣對您的密鑰授權進行編碼:

String username = 'YOUR-KEY';
String password = ':';
String auth =
    'Basic ' + base64Encode(utf8.encode('$username:$password'));

 
Response response = await get('https://uibox.store/api/products/1?output_format=JSON',
    headers: <String, String>{'authorization': auth,});

看看這個答案

您必須 base64 對授權密鑰進行編碼。

試試這個:(我不是 flutter 程序員)

import 'dart:convert';
Codec<String, String> stringToBase64 = utf8.fuse(base64);
String encoded = stringToBase64.encode(credentials);

更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM