Closed
Description
Basic Infos
- This issue complies with the issue POLICY doc.
- I have read the documentation at readthedocs and the issue is not addressed there.
- I have tested that the issue is present in current master branch (aka latest git). (I don't know how to do this in Platformio)
- I have searched the issue tracker for a similar issue.
- If there is a stack dump, I have decoded it.
- I have filled out all fields below.
Platform
- Hardware: ESP-12E
- Core Version: 3.0.2
- Development Env: Platformio (with
-DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_PORT=Serial
build flags) - Operating System: Windows
Settings in IDE
- Module: Generic ESP8266 Module
- Flash Mode: qio (I guess)
- Flash Size: 4MB
- lwip Variant: v2 Lower Memory
- Reset Method: nodemcu
- Flash Frequency: 26MHz
- CPU Frequency: 80MHz
- Upload Using: Serial
- Upload Speed: 921600
Problem Description
Trying to download a file from a URL directly to a file stream returns an "error(-11): read Timeout" (HTTPC_ERROR_READ_TIMEOUT).
It works fine if doing http.writeToStream(&Serial);
instead of http.writeToStream(&f);
.
It works fine using core v2.7.4 (platform = [email protected]
in platformio.ini)
I got the same error using:
- core 3.0.0 (
platform = [email protected]
in platformio.ini) - core 3.0.1 ((
platform = [email protected]
in platformio.ini) - core 3.1.0 (
platform = [email protected]
in platformio.ini).
Seems to be working with 3.0.1-dev, using this config in platformio.ini:
platform = espressif8266
platform_packages =
platformio/framework-arduinoespressif8266 @ https://github.com/esp8266/Arduino.git
MCVE Sketch
#include <Arduino.h>
#include <LittleFS.h>
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#define FILENAME "/test.txt"
#define URL "http://brokestudio.fr/test.txt"
#define SSID "your_ssid"
#define PASSWORD "your_password"
HTTPClient http;
WiFiClient client;
File f;
void setup() {
// init serial
Serial.begin(115200);
Serial.println();
// connect to WiFi
WiFi.begin(SSID, PASSWORD);
Serial.print(F("Connecting"));
// Wait for the Wi-Fi to connect
while (WiFi.status() != WL_CONNECTED)
{
delay(1000);
Serial.print('.');
}
Serial.println(F("Connected!"));
// init file system
if (!LittleFS.begin())
Serial.println(F("File system mount failed"));
else
Serial.println(F("File system mount successful"));
// check if test file exists and delete it if needed
if(LittleFS.exists(FILENAME))
LittleFS.remove(FILENAME);
// try to download a file
int httpCode;
int error;
Serial.println(F("Downloading: " URL));
f = LittleFS.open(FILENAME, "w");
if (f)
{
http.begin(client, URL);
httpCode = http.GET();
switch(httpCode)
{
case HTTP_CODE_OK:
error = http.writeToStream(&f);
Serial.printf("Error code: %i\r\n", error);
break;
default:
Serial.println(F("[HTTP] GET failed, error: "));
Serial.printf("%i - %s\r\n", httpCode, http.errorToString(httpCode).c_str());
Serial.println(F(URL));
break;
}
f.close();
}
http.end();
// output file content
Serial.println(F("Reading file content"));
Serial.println(F("---"));
f = LittleFS.open(FILENAME, "r");
String content = f.readString();
Serial.println(content);
f.close();
Serial.println(F("---"));
}
void loop() {
}
Debug Messages
SDK:2.2.2-dev(38a443e)/Core:3.0.2=30002000/lwIP:STABLE-2_1_2_RELEASE/glue:1.2-48-g7421258/BearSSL:6105635
fpm close 1
mode : sta(bc:dd:c2:fd:ed:f6)
add if0
Connecting..scandone
state: 0 -> 2 (b0)
.state: 2 -> 3 (0)
state: 3 -> 5 (10)
add 0
aid 3
cnt
connected with BARBE_WIFI_RDC, channel 1
dhcp client start...
..ip:192.168.2.25,mask:255.255.255.0,gw:192.168.2.1
.Connected!
File system mount successful
Downloading: http://brokestudio.fr/test.txt
[HTTP-Client][begin] url: http://brokestudio.fr/test.txt
[HTTP-Client][begin] host: brokestudio.fr port: 80 url: /test.txt
[HTTP-Client][sendRequest] type: 'GET' redirCount: 0
[HTTP-Client] connected to brokestudio.fr:80
[HTTP-Client] sending request header
-----
GET /test.txt HTTP/1.1
Host: brokestudio.fr
User-Agent: ESP8266HTTPClient
Accept-Encoding: identity;q=1,chunked;q=0.1,*;q=0
Connection: keep-alive
Content-Length: 0
-----
'HTTP-Client][handleHeaderResponse] RX: 'HTTP/1.1 200 OK
'HTTP-Client][handleHeaderResponse] RX: 'Content-Type: text/plain
'HTTP-Client][handleHeaderResponse] RX: 'Content-Length: 12
'HTTP-Client][handleHeaderResponse] RX: 'Connection: keep-alive
'HTTP-Client][handleHeaderResponse] RX: 'Keep-Alive: timeout=15
'HTTP-Client][handleHeaderResponse] RX: 'Date: Tue, 14 Dec 2021 17:15:13 GMT
'HTTP-Client][handleHeaderResponse] RX: 'Server: Apache
'HTTP-Client][handleHeaderResponse] RX: 'Last-Modified: Tue, 14 Dec 2021 16:44:46 GMT
'HTTP-Client][handleHeaderResponse] RX: 'ETag: "c-5d31de829f9eb"
'HTTP-Client][handleHeaderResponse] RX: 'Accept-Ranges: bytes
'HTTP-Client][handleHeaderResponse] RX: '
[HTTP-Client][handleHeaderResponse] code: 200
[HTTP-Client][handleHeaderResponse] size: 12
[HTTP-Client][returnError] error(-11): read Timeout
[HTTP-Client][returnError] tcp stop
Error code: -11
[HTTP-Client][end] still data in buffer (12), clean up.
[HTTP-Client][end] tcp keep open for reuse
Reading file content
---
---
Metadata
Metadata
Assignees
Labels
No labels