2016-04-01 13 views
0

Bir cURL komutunu bir retrofit çağrısına dönüştürmeye çalışıyorum. cURL komut şöyledir:CURL komutunu aramayı yeniden düzenlemek için dönüştürmek

curl -u {username}:{password} -X POST 
--header "Content-Type: audio/wav" 
--header "Transfer-Encoding: chunked" 
--data-binary @{audiofile}.wav 
"{url}" -i -v 

Zaten Yetkilendirme başlığı olarak kullanıcı adı ve şifre bir Base64 ekleyerek -u komutunu dönüştürüldü. Diğer başlığı da ekledim. Ancak sorun güçlendirme çağrısı ile. Uyarlama çağrı şu anda:

@POST 
@Headers({"Transfer-Encoding: chunked", "Content-Type: audio/wav"}) 
Call<Station> translateAudio(@Url String url, @Header("Authorization") String auth, 
     @Body RequestBody file); 

cURL kullanarak

ses dosyası sunucuda doğru işleme koyulabilmesi komutu. Ancak, retrofit çağrısını denediğimde kullandığım hizmetten bir hata alıyorum. Retrofit çağrı ve cURL biri arasında bir fark var gibi görünüyor. Farkın ne olduğunu bilen var mı? Kimlik bilgileri kabul edilir, bu yüzden sorun değil.

+0

Ne tür bir hata alıyorsunuz? jonas.koeritz @ –

+0

: hatadır: { \t "code_description": "Kötü Talebi", \t "kod": 400, \t "hata": "veri akışı ses/wav dönüştüremedik -> ses/x-float-array " } Ancak, bu hizmete özgüdür. Belki de dosyayı gönderme farkını aramakta yardımcı olabilir. – Marc

+0

'File' nesnesini nasıl yaratıyorsunuz? –

cevap

0

Kodunuz, sunucuya bir Android File Nesnesi göndermeye çalışır. Gerçek içeriği sunucuya göndermek için önce dosyayı bayt dizisine veya diğer uygun yapıya okumalısınız.

See this question for a quick solution how to do this

+0

Verileri bayt dizisi ile göndermeyi denedim, ancak bu sorunu çözmedi. Hala aynı cevabı aldım. RequestBody'yi oluşturmak için kullandığım yöntem RequestBody.create (MediaType.parse ("audio/wav"), bayt'tır); – Marc

İlgili konular