GVKun编程网logo

http – 如何在Flutter移动应用程序的API调用中传递基本身份验证凭据?(flutter调用接口)

9

在本文中,我们将为您详细介绍http–如何在Flutter移动应用程序的API调用中传递基本身份验证凭据?的相关知识,并且为您解答关于flutter调用接口的疑问,此外,我们还会提供一些关于Andro

在本文中,我们将为您详细介绍http – 如何在Flutter移动应用程序的API调用中传递基本身份验证凭据?的相关知识,并且为您解答关于flutter调用接口的疑问,此外,我们还会提供一些关于Android WebView清除基本身份验证凭据、Angular 6 HTTP使用HTTP基本身份验证获取请求、Flutter Dart使用对API的基本身份验证连接到iis10的问题、Flutter 使用受基本身份验证保护的网络图像 问题的有用信息。

本文目录一览:

http – 如何在Flutter移动应用程序的API调用中传递基本身份验证凭据?(flutter调用接口)

http – 如何在Flutter移动应用程序的API调用中传递基本身份验证凭据?(flutter调用接口)

我正在开发一个简单的Flutter移动应用程序,需要调用使用Basic Auth的API.

我可以使用电子邮件和电子邮件点击Postman中的API.密码凭证,它编码电子邮件&在执行请求之前,Base64中的密码(我假设用“:”分隔).

我不知道如何在Flutter / Dart中做到这一点……

我已经修改了Http包并尝试进行Base64编码……但我只是从服务器上找回错误.

任何人都可以为基本身份验证请求提供一些指导或示例吗?

解决方法

假设您的服务器期望用户名:密码组合将其编码为UTF-8(有关详细信息,请参阅 RFC 7617),然后使用:

import 'dart:convert';

import 'package:http/http.dart';

main() async {
  String username = 'test';
  String password = '123£';
  String basicAuth =
      'Basic ' + base64Encode(utf8.encode('$username:$password'));
  print(basicAuth);

  Response r = await get('https://api.somewhere.io',headers: {'authorization': basicAuth});
  print(r.statusCode);
  print(r.body);
}

Android WebView清除基本身份验证凭据

Android WebView清除基本身份验证凭据

我已经制作了一个使用基本身份验证对服务器进行身份验证的应用.但是我无法清除凭据,因此这意味着我有两个未解决的问题:

>如果不退出程序,用户将无法注销
>如果用户输入凭据错误,则必须退出并重新输入程序

我尝试了很多我自己的不同实现,很多在这个网站上推荐.我在freenode上安排了#android-dev无济于事.所以这是我的最后一个选择.

这是我的WebView示例代码(我已经取出了一些东西,但主要代码基本相同):

wv = new WebView(getBaseContext());
    wv.setWebViewClient(new WebViewClient() {
        boolean error = false;
        int count = 0;
        int checked = 0;

        @Override
        public void onReceivedHttpAuthRequest(WebView view,HttpAuthHandler handler,String host,String realm) {
            count++;
            if (count >= 3) {
                Toast.makeText(getBaseContext(),"Login Failed. Please Try Again.",Toast.LENGTH_LONG).show();

            } else {
                handler.proceed(getUser(),getpass());
            }// end else
        }// end onReceivedHttpAuthRequest


        @Override
        public void onPageStarted(WebView view,String url,Bitmap favicon) {

        }// onPageStarted

        // on success switch activities
        @Override
        public void onPageFinished(WebView view,String url) {

            if (view.getTitle().equalsIgnoreCase("fooTitle")) {

                // switch activities
                Intent fooActivity = new Intent(getBaseContext(),fooActivity.class);
                startActivity(fooActivity);
            } else {
                //Failed
            }// end else
        }// end onPageFinished
    });// end setWebViewCleint

    wv.getSettings().setJavaScriptEnabled(true);
    wv.loadUrl(url);

只有我第一次运行它才会运行onReceivedHttpAuthRequest.如果我注销并重新登录,它将运行onPageStarted,然后使用以前的凭据onPageFinished.因此,如果我退出并输入新用户,我将重新登录原始用户.或者,如果我输入错误的用户名和密码,它将挂在OnPageStarted上.我已经尝试过使用onReceivedError和http错误,但没有任何好处.

以下是我尝试使用logout()方法实现deauth的一些代码,以及代码的其他部分.我也尝试了很多不同的变体:

wv.clearCache(true);
    wv.setHttpAuthUsernamePassword(host,realm,"","");
    clearCacheFolder(this.getCacheDir());
    clearCacheFolder(this.getExternalCacheDir());
    this.getBaseContext().deleteDatabase("webview.db");
    this.getBaseContext().deleteDatabase("webviewCache.db");
    WebViewDatabase.getInstance(getBaseContext()).clearHttpAuthUsernamePassword();
    WebViewDatabase.getInstance(getBaseContext()).clearUsernamePassword();
    WebViewDatabase.getInstance(getBaseContext()).clearFormData();
    WebStorage.getInstance().deleteallData();
    wv.setHttpAuthUsernamePassword(host,username,password);

ClearCacheFolder引用此处发布的markjan方法:Android Webview – Completely Clear the Cache

解决方法

试试这个:

CookieSyncManager.createInstance(this);
    CookieManager cookieManager = CookieManager.getInstance();
    cookieManager.removeAllCookie();

我在VKontakte登录活动中使用此功能清除webview中保存的用户名/密码.

Angular 6 HTTP使用HTTP基本身份验证获取请求

Angular 6 HTTP使用HTTP基本身份验证获取请求

我正在尝试使用 基本身份验证 访问URL 。

URL返回JSON数据。

如何在下面的http请求中添加用户名和密码?

private postsURL = "https://jsonExample/posts";

getPosts(): Observable<AObjects []>{
    return this.http.get<AObjects[]>(this.postsURL); 
}

Flutter Dart使用对API的基本身份验证连接到iis10的问题

Flutter Dart使用对API的基本身份验证连接到iis10的问题

如何解决Flutter Dart使用对API的基本身份验证连接到iis10的问题?

我可以在android上使用类似的方法,并且工作正常。

服务器:Windows 2019,iis10

  Map <String,String> sendHDRS = {
      "Authorization": basicAuth,"Content-Type":"application/json","Accept":"application/json","Accept-Encoding":"gzip,deflate,br"
    };


    http.Response r = await http.post(
        Uri.decodeFull(inURL),headers: sendHDRS,body: inBody

    );

E / Flutter(11967):[错误:Flutter / lib / ui / ui_dart_state.cc(166)] 未处理的异常:E / Flutter(11967):#0 IOClient.send (package:http / src / io_client.dart:62:7)E / Flutter(11967): E / Flutter(11967):#1
BaseClient._sendUnstreamed(软件包:http / src / base_client.dart:91:38) E / Flutter(11967):#2 BaseClient.post (包装:http / src / base_client.dart:32:7)E / Flutter(11967):#3
发布。 (包装:http / http.dart:70:16)E / Flutter (11967年):#4 _withClient(package:http / http.dart:166:20)E / Flutter (11967):#5帖子(package:http / http.dart:69:5)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

Flutter 使用受基本身份验证保护的网络图像 问题

Flutter 使用受基本身份验证保护的网络图像 问题

如何解决Flutter 使用受基本身份验证保护的网络图像 问题?

我们有一个主站点,其中包含所有用户上传的内容,通常只是个人资料图片。

所有上传的文件夹都受到 Nginxbasic auth 的保护。所以你需要输入用户名和密码才能访问。

问题

如何使用 Flutter cached_network_image 做到这一点?或者类似的东西。我们不想将图像物理存储在设备上。

解决方法

您可以在 httpHeaders 小部件上使用 CachedNetworkImage 属性来传递自定义身份验证标头。

CachedNetworkImage(
  imageUrl: ...,imageBuilder: ...,placeholder: (context,url) => CircularProgressIndicator(),errorWidget: (context,url,error) => Icon(Icons.error),httpHeaders: {
    "Authorization": "Basic $token",}
),

关于http – 如何在Flutter移动应用程序的API调用中传递基本身份验证凭据?flutter调用接口的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于Android WebView清除基本身份验证凭据、Angular 6 HTTP使用HTTP基本身份验证获取请求、Flutter Dart使用对API的基本身份验证连接到iis10的问题、Flutter 使用受基本身份验证保护的网络图像 问题的相关信息,请在本站寻找。

本文标签: