Dart - Request GET with cookie
You could use the http.get(Url, Headers Map)
function and manually create your cookies in the header map, but it is easier to make a request with cookies included by using HttpClient
:
import 'dart:convert';
import 'dart:io';
import 'package:html/dom.dart';
import 'package:html/parser.dart' as parser;
parseHtml() async {
HttpClient client = new HttpClient();
HttpClientRequest clientRequest =
await client.getUrl(Uri.parse("http: //www.example.com/"));
clientRequest.cookies.add(Cookie("sessionid", "asdasdasqqwd"));
HttpClientResponse clientResponse = await clientRequest.close();
clientResponse.transform(utf8.decoder).listen((body) {
Document document = parser.parse(body);
print(document.text);
});
}
To complement the answer:
import 'dart:convert';
import 'dart:io';
import 'package:html/dom.dart';
import 'package:html/parser.dart' as parser;
parseHtml() async {
HttpClient client = new HttpClient();
HttpClientRequest clientRequest =
await client.getUrl(Uri.parse("http://www.example.com/"));
clientRequest.cookies.add(Cookie("sessionid", "asdasdasqqwd"));
HttpClientResponse clientResponse = await clientRequest.close();
clientResponse.transform(utf8.decoder).listen((body) {
Document document = parser.parse(body);
print(document.text); // null
for(Element element in document.getElementsByClassName('your_class')) {
...
}
});
}
The code above worked perfectly well as well as the code below works perfectly:
parseHtml() async {
http.Response response = await http.get(
'http://www.example.com/',
headers: {'Cookie': 'sessionid=asdasdasqqwd'}
);
Document document = parser.parse(response.body);
print(document.text); // null
for(Element element in document.getElementsByClassName('your_class')) {
...
}
}