postRequest function
POST request to fetch data from URL
Implementation
Future<String?> postRequest(
Uri url, {
Object? body,
Map<String, String> headers = const {},
bool debug = false,
Uri? proxyUrl,
bool? cacheResponse,
}) async {
printLog("HTTP POST URL: $url", debug, color: LogColor.magenta);
if (proxyUrl != null) {
printLog("Using proxy", debug);
if (headers.isNotEmpty && proxyUrl.host.contains("scrapingbee")) {
proxyUrl = addQueryParamToProxy(proxyUrl, "forward_headers_pure", "true");
Map<String, String> newHeaders = {};
headers.forEach((name, val) {
newHeaders["Spb-$name"] = val;
});
headers = newHeaders;
}
printLog("Prepending proxy URL...", debug, color: LogColor.yellow);
url = Uri.parse("$proxyUrl=${Uri.encodeComponent(url.toString())}");
}
printLog("HTTP Parser Headers: $headers", debug, color: LogColor.magenta);
printLog("HTTP Parser Payload: $body", debug, color: LogColor.magenta);
try {
var html = await http
.post(
url,
body: body,
headers: headers,
)
.timeout(
Duration(seconds: 30),
);
return utf8.decode(html.bodyBytes);
} catch (e) {
return null;
}
}