如何通过以下方法获得basic auth request分对httpbin.org/basic-auth

  • http.get()件作品
  • http.Request()失败

带着dart .这是my dartpad-demo-code

什么在起作用?

使用get()终于奏效了

import 'dart:convert' as convert;
import 'package:http/http.dart' as http;

void main(List<String> arguments) async {

  final url_httpbin = Uri.https('httpbin.org', '/basic-auth/myuser/mypasswd');  
  
  var base64Encoder = convert.Base64Encoder(); 
  var creds64 = base64Encoder.convert('myuser:mypasswd'.codeUnits);
  Map<String, String> authHeader = {'Authorization':'Basic $creds64'};  
    
  final response = await http.get(url_httpbin, 
       headers: authHeader); // sending headers with basic auth

  if (response.statusCode == 200) {
    final jsonResponse = convert.jsonDecode(response.body);
    print('Repsonse $jsonResponse');
  } else {
    print('Request failed with status: ${response.statusCode}.');
  }
}

Question How can Request be used

我try 使用Request()类失败了

var request = http.Request('GET', url_httpbin);
request.headers(authHeader); // <-- error 

最后一行返回

Error compiling to JavaScript: lib/main.dart:23:18: Error: 'headers' isn't a function or method and can't be invoked.
request.headers(authHeader); ^^^^^^^ Error: Compilation failed.

或者这个

 request.headers = authHeader; // error 

结果是

编译为JavaScript时出错:lib/main.dart:23:11:Error:the setter 没有为类"Request."定义"Headers".

  • ‘Request.Dart’来自‘Package:http/src/quest.dart’(‘/app/local_pub_cache/hosted/pub.dev/http-1.1.0/lib/src/request.dart’). Quest.Headers=authHeader; ^错误:编译失败.

Request class documentation开始,我不清楚如何使用这个类来发出http请求.

推荐答案

要使用Request设置标头,您需要填充Request.headers返回的 map ,例如:

request.headers['HeaderName'] = 'Value';

然后,要发送它,您需要在Client的实例上调用Client.send来发送请求,该请求将返回StreamedResponse(这意味着主体事先是未知的);然后您可以使用Response.fromStream获得Response.

下面是一个完整的例子:

  final client = Client();
  final request = Request('GET', url_httpbin);

  request.headers['HeaderName'] = 'Value';

  final streamedResponse = await client.send(request);
  final response = await Response.fromStream(streamedResponse);

  // Do your stuff ...
  
  client.close();  

Dart相关问答推荐

`异步内联方法`的这些定义之间有什么区别?

修复了 Flutter Dart 上 DataTable 的列和行标题

停止在缓存中保存 Flutter Web Firebase 托管

如何为屏幕设置不同的主题?

触发从小部件到状态对象的函数

在`lib`文件夹中使用`src`子文件夹有什么好处吗

dart 中 call() 的实现是什么?

如何go 除字符串中的变音符号?

Package:flutter/src/widgets/overlay.dart':Failed assertion: line 133 pos 12: "_overlay != null"

Flutter Drawer Widget - 更改 Scaffold.body 内容

Flutter url_launcher 未在发布模式下启动 url

错误:无法将参数类型void Function(ImageInfo, bool)分配给参数类型ImageStreamListener

如何在 Flutter 中让 Android 状态栏变亮

Flutter 构建失败. Android 依赖 'androidx.core:core' 的编译(1.0.0)和运行时(1.0.1)类路径有不同的版本

为什么 Dart 有编译时常量?

polymer SEO 是否友好?

如何在 Dart 2 中将 List 更改为 List

如何在 Dart 中尚不存在的目录 struct 中创建文件?

Dart 会支持服务器端开发吗?

如何在 Dart 中使用 Switch Case 语句