Ошибка API Google Диска: получена неверная полезная нагрузка JSON. Невозможно разобрать номер [закрыто]Php

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Ошибка API Google Диска: получена неверная полезная нагрузка JSON. Невозможно разобрать номер [закрыто]

Сообщение Anonymous »

Попытка загрузить файл через API многокомпонентной загрузки, как описано в документации для разработчиков Google Диска.
Был добавлен следующий заголовок:

Код: Выделить всё

Content-Type : multipart/related; boundary=foo_bar_baz
Content-Length :  calculated later
Authorization : token
Вот тело запроса:

Код: Выделить всё

--foo_bar_baz\r\nContent-Type: application/json; charset=UTF-8\r\n\r\n{"name": "testname.txt","mimeType":"text/plain"}\r\n--foo_bar_baz\r\nContent-Type:text/plain\r\n\r\n1234142 test\r\n--foo_bar_baz--
Ответ Google Диска всегда:

Код: Выделить всё

{
"error": {
"code": 400,
"message": "Invalid JSON payload received. Unable to parse number.\n--foo_bar_baz\\r\\nCon\n^",
"errors": [
{
"message": "Invalid JSON payload received. Unable to parse number.\n--foo_bar_baz\\r\\nCon\n^",
"domain": "global",
"reason": "parseError"
}
],
"status": "INVALID_ARGUMENT"
}
}
Вот фактический код на PHP с использованием функций WordPress:

Код: Выделить всё

public function create_file2($file_name, $mime_type, $file_content, $parent) {

$params = [
'uploadType' => 'multipart',
'supportsAllDrives' => 'true',
'includeItemsFromAllDrives' => 'true'
];

$metadata = [
'name' => $file_name,
'mimeType' => $mime_type
];

// Füge parent hinzu, wenn vorhanden
if (!empty($parent)) {
$metadata['parents'] = [$parent];
}
$metadata_json = json_encode($metadata, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
$boundary = md5(time());

$multipart_content = "--$boundary\r\n";
$multipart_content .= "Content-Type: application/json; charset=UTF-8\r\n";
$multipart_content .= "\r\n" . $metadata_json . "\r\n";
$multipart_content .= "--" . $boundary . "\r\n";
$multipart_content .= "Content-Type: $mime_type\r\n";
$multipart_content .= "Content-Transfer-Encoding: base64\r\n";
$multipart_content .= "\r\n" . base64_encode($file_content) . "\r\n";
$multipart_content .= "--$boundary--\r\n";

$url = KPR_gdrive_api_endpoint_files . '?' . http_build_query($params);

$response = wp_remote_post($url, [
'method' => 'POST',
'headers' => [
'Authorization' => 'Bearer ' . json_decode($this->token, true)['access_token'],
'Content-Type' => 'multipart/related; boundary=' . $boundary,
'Content-Length' => strlen($multipart_content)
],
'body' => $multipart_content,
'timeout' => 60
]);

if (is_wp_error($response)) {
error_log('create_file2 error: ' . $response->get_error_message());
return false;
}

$response_body = json_decode(wp_remote_retrieve_body($response), true);

if (isset($response_body['id'])) {
return $response_body['id'];
}

error_log('create_file2 error: Unexpected response');
}
Как бы я ни пытался редактировать тело запроса, получаю ту же ошибку. Могу ли я получить здесь помощь? Я безуспешно пытался устранить эту проблему уже неделю, буду благодарен за любую помощь.

Подробнее здесь: https://stackoverflow.com/questions/791 ... rse-number
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»