这个问题有点类似于HTTPRequest.request和sendData,似乎不能让这件事成功,但我现在有了更多的信息。这里的目标是发送带有查询参数的GET请求。我最初试图以这样的方式发送我的请求:
HttpRequest request = new HttpRequest();
request.open("GET", _url, async:true);
request.onError.listen(_onLoadError, onError: _onLoadError);
request.send(sendData);其中sendData是一个遵循查询参数(?myVariable=2&myOtherVariable=a等)的正常格式的字符串,因为这是这里的最终目标。请求被发送,但在任何监视工具(我使用的是查尔斯)中,都没有看到任何附加数据(sendData)。然后我试着:
HttpRequest request = new HttpRequest();
request.open("GET", _url + sendData, async:true);
request.onError.listen(_onLoadError, onError: _onLoadError);
request.send();所以现在我只是将查询字符串附加到url本身。这是按照预期的工作,但远不是优雅的。有没有更好的解决办法?
发布于 2014-01-03 14:40:44
根据W3 XMLHttpRequest规范
(在send()方法中)如果请求方法是GET或HEAD,则忽略参数。
所以这个问题的简单答案是否定的。sendData不能附加到GET请求,这是由XMLHttpRequest规范而不是Dart的限制。
尽管如此,对于像这样的请求,使用HttpRequest.getString可能更容易理解和使用。
HttpRequest.getString(_url + sendData).then((HttpRequest req) {
// ... Code here
}).catchError(_onLoadError);发布于 2014-01-03 14:54:19
在GET请求中,您总是将查询字符串添加到URL吗?当您创建Uri时,您可以传递一个带有查询参数的映射,如果您觉得这更优雅的话。
Map query = {'xx':'yy', 'zz' : 'ss'};
String url = "http://localhost:8080/myapp/signinService";
Uri uri = new Uri(path: url, queryParameters : query);
HttpRequest.getString(uri.toString().then((HttpRequest req) ...发布于 2018-06-03 05:39:04
如果要从URL (String) +查询参数(Map)生成有效的url,可以执行以下操作:
Uri uri = Uri.parse(url).replace(queryParameters: parameters);
String finalURL = uri.toString();url是String,参数是Map
https://stackoverflow.com/questions/20905917
复制相似问题