Я работаю над мобильным приложением, которое записывает видео и загружает его на нашу учетную запись Youtube, поэтому у меня есть токен и токен обновления, я могу обновить токен, когда он истекает, но я не могу загрузить видео,Вот пример, как я пытаюсь:
override fun uploadFile(sourceFileUri: String) {
doAsync{
val fileName = sourceFileUri
var conn: HttpURLConnection? = null
var dos: DataOutputStream? = null
var lineEnd = "\r\n"
var twoHyphens = "--"
var upLoadServerUri = "https://www.googleapis.com/upload/youtube/v3/videos"
var boundary = "*****"
var bytesRead: Int
var bytesAvailable: Int
var bufferSize: Int
var buffer: ByteArray
var maxBufferSize = 1 * 1024 * 1024
var sourceFile = File(sourceFileUri)
try {
// open a URL connection to the Servlet
val fileInputStream = FileInputStream(sourceFile)
val url = URL(upLoadServerUri)
// Open a HTTP connection to the URL
conn = url.openConnection() as HttpURLConnection
conn.doInput = true // Allow Inputs
conn.doOutput = true // Allow Outputs
conn.useCaches = false // Don't use a Cached Copy
conn.requestMethod = "POST"
conn.setRequestProperty("Connection", "Keep-Alive")
conn.setRequestProperty("Authorization", "Bearer XXXXXXXXXX")
conn.setRequestProperty("Content-Type", "application/json")
conn.setRequestProperty("X-Upload-Content-Length", sourceFile.readBytes().size.toString())
conn.setRequestProperty("X-Upload-Content-Type", "video/mp4")
conn.setRequestProperty("part", "snippet,status")
conn.setRequestProperty("snippet.categoryId", "22")
conn.setRequestProperty("snippet.defaultLanguage", "")
conn.setRequestProperty("snippet.description", "Video evidencia carservice")
conn.setRequestProperty("snippet.tags[]", "")
conn.setRequestProperty("snippet.title", "Orden: 1500 Frenos")
conn.setRequestProperty("status.embeddable", "")
conn.setRequestProperty("status.license", "")
conn.setRequestProperty("status.privacyStatus", "private")
conn.setRequestProperty("status.publicStatsViewable", "")
dos = DataOutputStream(conn.outputStream);
// dos.writeBytes(twoHyphens + boundary + lineEnd)
// create a buffer of maximum size
bytesAvailable = fileInputStream.available();
bufferSize = Math.min(bytesAvailable, maxBufferSize);
buffer = ByteArray(bufferSize);
// read file and write it into form...
bytesRead = fileInputStream.read(buffer, 0, bufferSize);
while (bytesRead > 0) {
dos.write(buffer, 0, bufferSize);
bytesAvailable = fileInputStream.available();
bufferSize = Math.min(bytesAvailable, maxBufferSize);
bytesRead = fileInputStream.read(buffer, 0, bufferSize);
}
var serverResponseCode = conn.responseCode
val serverResponseMessage = conn.responseMessage
Log.i("uploadFile", "HTTP Response is : "
+ serverResponseMessage + ": " + serverResponseCode)
fileInputStream.close();
dos.flush();
dos.close();
} catch (e:Exception) {
e.printStackTrace()
}
}.execute()
}
Я получаю: Плохой запрос: 400
Я не могу использовать библиотеку Java, потому что у них нет возможности загружать видео на нашсобственная учетная запись
хорошо, спасибо заранее
я получаю пример из здесь и пытаюсь адаптировать их, но я не уверен, является ли правильный способ сделать это
PS извините за мой плохой английский ...