Google Drive API Загрузить нет ответа - PullRequest
0 голосов
/ 09 марта 2019

Я попытался загрузить изображение (JPG) с Arduino на диск Google с помощью API. Иногда это работает (я делаю запрос POST, как описано в руководстве, и отправляю все биты), и я получаю 200 OK, но иногда, после отправки всех байтов, привод Google не дает мне никакого ответа. какие-либо предложения?

Здесь есть часть кода, которая дозирует загрузку (обратите внимание, я вставил только «проблемную» часть). - Иногда цикл while заканчивается, потому что я получаю ответ 200. - Иногда я не получаю ответа и поэтому снова начинаю отправлять изображение.

В

while (millis() - startTime < 15000 && !received)

Я пытался ждать до десяти минут, но не получил ответа

Serial.println("Token request has been succesful. Starting upload");
bool succesful = false;

// I have obtained the uploadID, now I start uploading
String location = "https://www.googleapis.com/upload/drive/v3/files?uploadType=resumable&upload_id=" + uploadID;

received = true;

while(!succesful){                              // I upload until it is successful

            // I stop the previous client session, because now I start a new one, to do the PUT request and upload the file
            client.stop();

            // Upload request

            if (client.connect("www.googleapis.com", 443)) {
                client.println("PUT " + location + " HTTP/1.1");
                client.println("User-Agent: Arduino Camera");
                client.println("Content-Length: "  + String(image.size()));
                client.println("Connection: close");
                client.println();
                while (image.available()) {
                    client.write(image.read());         // Here I send the bytes of the image
                }
                Serial.println(".");
                image.close();
                received = false;
            } else {
                Serial.println("Connection failed");
                received = true;
            }


            // Listening to the response
            startTime = millis();
            String code = "";
            while (millis() - startTime < 15000 && !received) { //try to listen for 5 seconds
                int i = 0;
                while (client.available() && i < 12) {
                    received = true;
                    char c = client.read();
                    Serial.write(c);
                    code = code + c;
                    i++;
                }

                // HTTP 200 OK
                if (code == "HTTP/1.1 200" || code == "HTTP/1.1 201")
                {
                    while(client.available()) {
                        char c = client.read();
                        Serial.write(c);
                    }
                    Serial.println("\nUpload succesful");
                    succesful = true;
                    // client.stop();
                    return succesful;

                    }

if (!received) {
                client.stop();
                Serial.println("\nUpload interrupted. Starting a new session");

                // I have to open image again
                image = SD.open(filepath, FILE_READ);
            }

        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...