如何将查询参数添加到Dart http请求?
问题内容:
如何正确地向Dart http获取请求添加查询参数?尝试将’?param1 = one&param2 =
two’附加到我的网址时,我无法获得正确响应的请求,但是在Postman中它可以正常工作。这是我的代码的要点:
final String url = "https://www.myurl.com/api/v1/test/";
String workingStringInPostman = "https://www.myurl.com/api/v1/test/123/?param1=one¶m2=two";
Map<String, String> qParams = {
'param1': 'one',
'param2': 'two',
};
var res = await http
.get(Uri.encodeFull("$url${widget.pk}/"),
headers: {HttpHeaders.authorizationHeader: "Token $token",
HttpHeaders.contentTypeHeader: "application/json"},
);
$ {widget.pk}只是传递的整数值(请参阅workingStringInPostman变量中的值123。
如果需要Uri参数,则可以使用qParams。
一个代码示例将受到欢迎。
问题答案:
您将要构造一个Uri
并将其用于请求。就像是
var queryParameters = {
'param1': 'one',
'param2': 'two',
};
var uri =
Uri.https('www.myurl.com', '/api/v1/test/${widget.pk}', queryParameters);
var response = await http.get(uri, headers: {
HttpHeaders.authorizationHeader: 'Token $token',
HttpHeaders.contentTypeHeader: 'application/json',
});
参见https://api.dartlang.org/stable/2.0.0/dart-
core/Uri/Uri.https.html