У меня есть небольшая проблема, и я борюсь с этим. Я пытаюсь загрузить аудио в онлайн-сервис через их API.
У меня есть команда curl, но она не работает в VB. net (Community 2017, если это помогает ). Я знаю, что MS уходят от VB, но я хотел включить эту новую функцию загрузки в текущую программу, которую я написал за эти годы.
Проблема в том, что этот пример для curl работает :( Обычно у вас есть также ProgramId, clipID и ключ API авторизации (SPECIALLONGKEY), но я их спрятал)
curl "https://api.omnystudio.com/v0/programs/{programId}/clips/{clipId}/audio" --request PUT --data-binary "@birthday.mp3" --header "Accept:application/json" --header "Authorization:OmnyToken SPECIALLONGKEY"
Тем не менее, когда я пытаюсь сделать то же самое в VB. NET Ответ «401 несанкционированный».
Dim httpClient As New Http.HttpClient()
Dim request = New Http.HttpRequestMessage(New Http.HttpMethod("PUT"), "https://api.omnystudio.com/v0/programs/{programId}/clips/{clipId}/audio")
request.Headers.Add("Accept", "application/json")
request.Headers.Add("Accept-Encording", "gzip, deflate, br")
request.Headers.Add("Authorization", "OmnyToken SPECIALLONGKEY")
request.Content = New StringContent("C:\test\birthday.mp3")
request.Content.Headers.ContentType = MediaTypeHeaderValue.Parse("application/x-www-form-urlencoded")
Dim response = httpClient.SendAsync(request).Result
Debug.Print(request.ToString)
Debug.Print(response.ToString)
Я получаю этот ответ примерно так:
Method: PUT, RequestUri: 'https://api.omnystudio.com/v0/programs/{programId}/clips/{clipId}/audio', Version: 1.1, Content: System.Net.Http.StringContent, Headers:
{
Accept: application/json
Accept-Encording: gzip, deflate, br
Authorization: OmnyToken SPECIALLONGKEY
Content-Type: application/x-www-form-urlencoded
Content-Length: 50
}
StatusCode: 401, ReasonPhrase: 'Unauthorized. Provide a valid Authentication header', Version: 1.1, Content: System.Net.Http.StreamContent, Headers:
{
Connection: keep-alive
CF-Cache-Status: DYNAMIC
Expect-CT: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
CF-RAY: 5841cc895a0fda5e-SYD
Cache-Control: no-cache, private
Date: Wed, 15 Apr 2020 01:12:34 GMT
Server: cloudflare
WWW-Authenticate: OmnyToken
Content-Length: 0
}
Документация по API мне мало помогает, так как она просто говорит: «Аудио клипа может быть предоставлено в виде двоичного тела запроса "
Я запустил Fiddler, чтобы посмотреть, что происходит, и все это, кажется, проверяет правильность отправляемых правильных заголовков et c. Просто интересно, если или что я делаю неправильно, или, если мне нужно просто go записать командные файлы, а затем заставить программу выполнять их каждый раз, когда должно произойти это конкретное c происшествие. Спасибо.