cURL: поток HTTP / 2 1 не был закрыт корректно: PROTOCOL_ERROR (ошибка 1) - PullRequest
0 голосов
/ 04 марта 2020

Я пытаюсь загрузить видео в API YouTube через cURL. Это мой код:

curl -v -X PUT '#{upload_uri}' -H 'Authorization: Bearer #{@test_token}' -H 'Content-Length: #{File.size(@video).to_s}' -H 'Content-Type: video/*' -d @'#{@video}'

Полученный ответ:

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0*   Trying 216.58.196.170...
* TCP_NODELAY set
* Connected to www.googleapis.com (216.58.196.170) port 443 (#0)
---
---
* Using Stream ID: 1 (easy handle 0x7f9570000400)
> PUT /upload/youtube/v3/videos?part=snippet,status,contentDetails&uploadType=resumable&upload_id=<id> HTTP/2
> Host: www.googleapis.com
> User-Agent: curl/7.54.0
> Accept: */*
> Authorization: Bearer <token>
> Content-Length: 140926828
> Content-Type: video/*
> 
* Connection state changed (MAX_CONCURRENT_STREAMS updated)!
} [16384 bytes data]
 97 65.3M    0     0   97 64.0M      0  3704k  0:00:18  0:00:17  0:00:01 4226k* We are completely uploaded and fine
< HTTP/2 400 
< content-type: text/html; charset=UTF-8
< referrer-policy: no-referrer
< content-length: 1555
< date: Wed, 04 Mar 2020 09:21:34 GMT
< 
* HTTP/2 stream 1 was not closed cleanly: PROTOCOL_ERROR (err 1)
 99 65.3M    0     0  100 65.3M      0  3714k  0:00:18  0:00:18 --:--:-- 4242k
* Closing connection 0
* TLSv1.2 (OUT), TLS alert, Client hello (1):
} [2 bytes data]
curl: (92) HTTP/2 stream 1 was not closed cleanly: PROTOCOL_ERROR (err 1)

Я понимаю, что это связано с неправильными значениями Content-Length. Однако значение этого заголовка соответствует размеру файла, отправляемого в двоичном виде.

Чем вызвана эта ошибка в cURL?

Этот запрос прекрасно работает с почтальоном, с той же Content-Length, предоставленной здесь.

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