2014-11-09 17 views
9

Quindi in realtà sto cercando di eseguire un PUT con un oggetto TypedByteArray come corpo. Sto interagire con un server Azure, quindi il primo passo è quello diAndroid: modifica del percorso dell'URL senza "/"

  1. Effettuare una chiamata POST con il mio metadati dell'immagine e torno un URL (dire URL_PUT)

  2. devo fare una PUT richiesta in tal URL_PUT (dal punto 1), quindi la mia funzione di interfaccia Singleton retrofit assomiglia:

public interface ImageInterface { 

     @PUT("/{nothing}") 
     Response uploadBlob(@Body TypedByteArray byteArray, 
      @Header("Content-Length") String byteArrayLength, 
      @Path(value="nothing",encode=false) String nothing); 

    } 

ma ottengo un errore che dice che sentiero URL deve iniziare con un "/" quando passo "" per niente. Per la funzione di cui sopra ho provato a passare una stringa vuota, ma senza successo.

Quindi, in pratica, voglio solo utilizzare il retrofit con un endpoint ma nessun percorso/percorso di transizione per PUT. C'è un modo per fare questo ?

+0

Non puoi semplicemente mettere @PUT ("/"). Inoltre stai inviando un array di byte con Content-Length e lo fai in modo sincrono. Spero che tu non stia caricando un file ... Questo non è il modo di farlo. Potrei aiutare di più se dovessi spiegare cosa stai cercando di inviare. – napkinsterror

+0

Ah ah ... Non lo sto facendo sul thread principale .... è stato come tornare ... ma il meglio della mia memoria ... Ho provato quello che hai menzionato e non ha funzionato ... non riesco a ricordare quale sia la ragione, ma sono dannatamente sicuro che l'ho provato ... – uLYsseus

risposta

0

Come dividere l'URL_PUT?

Nell'esempio avete http://example.com/path/more/path/image.jpg

si divide in 2 stringhe: - http // example.com - /path/more/path/image.jpg

Poi si sbarazzarsi del prima "/" del 2nd Stirng. Quindi simile a quello che hai avuto:

public interface ImageInterface { 

    @PUT("/{second-string}") 
    Response uploadBlob(@Body TypedByteArray byteArray, 
     @Header("Content-Length") String byteArrayLength, 
     @Path(value="second-string",encode=false) String secondString); 

} 

Quindi sul tuo client utilizzare la stringa 1 con questa interfaccia. E invia la stringa 2 come parametro. Immagino che questo dovrebbe funzionare.

(Scusate ho digitato questo così in fretta, io sono in movimento)

Problemi correlati