Получите неверный запрос от Google Calendar API - PullRequest
0 голосов
/ 06 сентября 2018

Я пытаюсь вставить событие в календарь Google, используя Qt C ++.

Перед вставкой событий я могу очистить основной календарь с помощью этих строк

const QUrl clearPrimaryUrl("https://www.googleapis.com/calendar/v3/calendars/primary/clear");

void GoogleWrapper::clearPrimaryCalendar()
{
    QNetworkReply *reply = google.post(clearPrimaryUrl);
    connect(reply, &QNetworkReply::finished, [=]()
    {
        reply->deleteLater();
        if(reply->error() != QNetworkReply::NoError)
        {
            qCritical() << "Google error:" << reply->errorString();
            return;
        }
        emit primaryCalendarCleared();
    });
}

google является объектом QOAuth2AuthorizationCodeFlow . Теперь, чтобы вставить события, я использую эти строки:

const QUrl insertEventUrl("https://www.googleapis.com/calendar/v3/calendars/primary/events");
void GoogleWrapper::insertEvent(const QByteArray &eventData)
{
    qDebug() << eventData;
    QNetworkReply *reply = google.post(insertEventUrl, eventData);
    connect(reply, &QNetworkReply::finished, [=]()
    {
        reply->deleteLater();
        if(reply->error() != QNetworkReply::NoError)
        {
            qCritical() << "Google error:" << reply->errorString();
            return;
        }
        emit eventInserted();
    });
}

Но вывод, который я получил от qCritical, всегда был Error transferring https://www.googleapis.com/calendar/v3/calendars/primary/events - server replied: Bad Request. Я попытался вывести eventData в файл и скопировать и вставить его в Google попробует этот API , и приведенные ниже данные json отлично работают

{
    "description": "some teacher name",
    "end": {
        "dateTime": "2018-12-19T11:15:00Z"
    },
    "location": "Room",
    "start": {
        "dateTime": "2018-12-19T09:30:00Z"
    },
    "summary": "Subject Name"
}

Кто-нибудь знает, что я сделал не так?

1 Ответ

0 голосов
/ 06 сентября 2018

Проблема решена благодаря комментарию "thuga".

В моем коде не было строки

google.setContentType(QAbstractOAuth2::ContentType::Json);
...