Voglio pubblicare una foto (memorizzata in appengine db) su facebook.GAE/J: Come invio un messaggio MIME multipart da appengine a facebook
Per provare ho la comprensione di base verso il basso a livello locale: Sono stato successo con questa forma: (. Ho afferrato l'access_token da una recente sessione per fare questo lavoro)
<form action="https://graph.facebook.com/7378294228/photos?access_token=AAAAAJPBSAzcBALmz7GOLZCER7Pc2347WQIDIlIFR8e2imWUzeuCKRLrXjAqR6zjaUb4laqkLtJlQlYa7X5ZBd2aNJoLom8M7IlvHfw39QZDZD" method="POST" enctype="multipart/form-data">
<input type="file" name="source" id="source"/>
<input type="text" name="message" value="mymess"/>
<input type="Submit"/>
</form>
Ecco che cosa ho provato su AppEngine senza successo finora:
MultipartEntity mpEntity = new MultipartEntity();
ContentBody cbFile = new ByteArrayBody(imageBytes, "image/jpeg", "w.jpg");
mpEntity.addPart("source", cbFile);
URL url = new URL("https://graph.facebook.com/"+albumUpload.getAlbumID()+"/photos?access_token="+albumUpload.getAuthToken());
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
connection.setRequestMethod("POST");
mpEntity.writeTo(connection.getOutputStream());
if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {
System.err.println("http success!");
}else{
System.err.println("http failed:"+connection.getResponseCode());
}
Ricevo un HTTP 400 - Richiesta non valida.
ho aggiunto questi per assicurarsi che stava facendo qualcosa:
System.out.println("mpEntity image content length: "+cbFile.getContentLength());
System.out.println("mpEntity content type:"+mpEntity.getContentType());
che si traduce in:
mpEntity image content length: 786145
mpEntity content type:Content-Type: multipart/form-data; boundary=oMiJCBHGVvZmU7s3FcUGXMbyU23aX_Ow
Gli unici esempi che posso trovare di utilizzo MultipartEntity on-line stanno utilizzando di HttpClient setEntity(), come tale non si applica in quanto si tratta di un URLFetch in appengine.
Grazie per qualsiasi aiuto/codice.
Grazie, @abramcat. Mi hai dato un grande aiuto. Ho impiegato 1,5 giorni per provare questa pubblicazione multiparte da GAE. – payliu
Grazie anche a abramcat, la tua documentazione è stata un grande supporto per me. Davvero apprezzato ! Mi chiedo solo perché le cose "di base" come il caricamento dei file debbano essere così complicate e così poco documentate. – Hugues
Devi accettare questa risposta. – Gray