|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Dec 2008
Messaggi: 975
|
[Java me] aiuto integrazione banner
Ciao a tutti! Ho bisogno di un grande aiuto...
In pratica, nella mia applicazione ho bisogno di visualizzare un banner pobblicitario. Il network di advertising che vorrei usare mi dice questo per integrare il banner: 1. In order to utilize our Server-to-Server API your application must support the ability to handle HTML content inside your application. 2. Once you have the object in your application that can receive HTML content, you must pass via an HTTP GET call the required variables to make an ad call with the appropriate key/value pairs. Unique Identifier of that user (AUID) Public IP Address of the Device (UIP) User Agent String of the Device’s Browser (UA) Placement ID (APID) 3. Formulate the ad call via the example below. oswodddhttp://ads.mp.mydas.mobi/getAd?apid=357&auid=testingauid&uip=66.209.31.31&ua=testing&mode=test A quanto ho capito devo formulare una richiesta di tipo GET al loro server... Come posso realizzarla in java me? Come mi devo muovere? Mi potreste dare gentilmente un codice d'esempio sull'esempio postato? Grazie a tutti in anticipo! Ultima modifica di DeAndreon : 18-04-2011 alle 15:13. |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
E' un po' che non pasticcio più come la versione me (diciamo una decina d'anni va
![]()
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Dec 2008
Messaggi: 975
|
Ciao! Grazie per la risposta. Ma in pratica per far funzionare il banner devo solo implementare questa richiesta tramite get? Perchè non ho capito bene cosa vuole la richiesta che mi è stata fatta per visualizzare il banner...
In pratica dovrei fare un codice del genere che c'è qui?: http://j2me-codes.blogspot.com/2007/...-php-http.html Gentilmente, se ti va soprattutto, potresti farmi un esempio di codice? Non sono molto pratico con l'http... Ho solo una buona conoscenza di java(grazie all'esame di programmazione ad oggetti). Guarda questo: http://www.java2s.com/Tutorial/Java/...etwithJ2ME.htm sembra fare al caso mio... Questo codice può soddisfare la richiesta che mi è stata fatta per mettere il banner nel mio programma? Grazie mille! Ultima modifica di DeAndreon : 18-04-2011 alle 15:05. |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
L'http get dell'esempio va benissimo. Poi devi fare il parsing del codice html che ti arriva come risposta (a meno che non abbiano aggiunto in widget per la visualizzazione di contenuti html alle api di Jme).
Se il banner è semplicemente un'immagine passiva, devi solo pescare l'url dell'immagine, caricarla e mostrarla. Se è un'immagine con link devi scrivere anche la logica di gestione del link. Se è componente html più complicato è già più dura.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
#5 | |
Senior Member
Iscritto dal: Dec 2008
Messaggi: 975
|
Quote:
![]() Oddio, la cosa si fa ancora più complicata :S Cos'è il parsing? :S Ho fatto il mio codice riutilizzando quello: Codice:
urlstring = "http://ads.mp.mydas.mobi/getAd?apid=41608&auid=testingauid&uip=66.209.31.31&ua=testing&mode=test"; new Thread() { public void run() { // sending a GET request to web server String resultstring = sendGetRequest(urlstring); } }.start(); // send a GET request to web server public String sendGetRequest(String urlstring) { HttpConnection hc = null; InputStream dis = null; ByteArrayOutputStream baos = new ByteArrayOutputStream(); try { /* openning up http connection with the web server * when the connection is opened, the default request * method is GET */ hc = (HttpConnection) Connector.open(urlstring); // establishing input stream from the connection dis = hc.openInputStream(); byte[] buf = new byte[512]; // reading the response from web server character by character int red; while ((red = dis.read(buf)) != -1 ) { baos.write(buf, 0, red); } } catch (IOException ioe) { return "ERROR"; } finally { try { if(hc != null) hc.close(); } catch (IOException ignored) { } try { if(dis != null) dis.close();} catch (IOException ignored) {} } return baos.toString() /*String(baos.getBytes())*/; } Ora cosa devo fare per visualizzare l'immagine? ![]() Grazie ancora ![]() |
|
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
La stringa restituita dal metodo sendGetRequest è (il corpo di ) un messaggio in formato HTTP.
C'è uno standard che definisce cosa significhi "messaggio HTTP" ma, nel nostro caso, dovrebbe trattarsi di un messaggio HTTP il cui corpo contiene del codice HTML. Nella fattispecie, il codice risulta (da una prova): Codice:
<a href="http://bank06.mi.ads.mp.mydas.mobi/getAd.php5?apid=357&ua=testing&uip=66.209.31.31&auid=testingauid&testua=Java%2F1.6.0_24&testuip=127.0.0.1&testuid=testingauid&mode=results"> <img src="http://bank06.mi.ads.mp.mydas.mobi/getAd.php5?apid=357&ua=testing&uip=66.209.31.31&auid=testingauid&testua=Java%2F1.6.0_24&testuip=127.0.0.1&testuid=testingauid&mode=validate" border="0"/> </a> I dati dell'immagine li ottieni collegandoti all'url definito come valore dell'attributo src (in rosso). Il codice html restituito dice anche che quando l'utente clicca su quell'immagine il browser deve caricare la pagina indicata dal valore dell'attributo href di a (in verde). Se la struttura è sempre quella (e trattandosi di un banner potrebbe anche esserlo) allora puoi fare il parsing (cioè analisi e divisione in blocchi funzionali di un certo flusso di dati) applicando questa logica: l'indirizzo dei dati da caricare quando l'utente "attiva" l'immagine del banner è (tutto quello che è contenuto tra href=" e il successivo "), l'indirizzo del flusso dati dell'immagine da caricare è (tutto quello che è contenuto tra src=" e il successivo ").
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
#7 | |
Senior Member
Iscritto dal: Dec 2008
Messaggi: 975
|
Quote:
Ora devo fare il parsing. In pratica devo estrapolare l'indirizzo dell'immagine e visualizzare il banner in un item e quando viene cliccato usare il link per il click, giusto? Per estrapolare ho pensato alle funzioni di String come substring però il trucco dovrebbe funzionare se non cambiasse mai la lunghezza della stringa... |
|
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Esiste sicuramente un'espressione regolare per farlo ma te la cavi anche con "indexOf".
Il primo pezzo inizia con href=" e finisce con " Detta s la stringa restituita dal metodo in esame, l'indirizzo del link è: String startToken = "href=\""; String endToken = "\""; int start = s.indexOf(startToken) + startToken.length(); int end = s.indexOf(endToken, start); String hrefUrl = s.substring(start, end); L'indirizzo dell'immagine è: String s0 = "src=\""; String s1 = "\""; int start = s.indexOf(s0) + s0.length(); int end = s.indexOf(s1, start); String srcUrl = s.substring(s0, s1); A naso. Magari controlla se ci va un +1 o -1 da qualche parte.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Dec 2008
Messaggi: 975
|
Si, ho fatto una cosa simile alla tua, sono riuscito ad ottenere l'indirizzo dell'immagine solo che ora non ne vuole sapere di mettersi sullo schermo del simulatore...
In pratica ho fatto così: Codice:
int first = resultstring.indexOf("src="); int last = resultstring.indexOf("validate"); String sub = resultstring.substring(first+5, last+8); HttpConnection hpc = null; DataInputStream dis = null; try { hpc = (HttpConnection) Connector.open(sub); int length = (int) hpc.getLength(); byte[] data = new byte[length]; dis = new DataInputStream(hpc.openInputStream()); dis.readFully(data); image = Image.createImage(data, 0, data.length); }catch(Exception e){} finally { if (hpc != null) try { hpc.close(); } catch (IOException ex) { ex.printStackTrace(); } if (dis != null) try { dis.close(); } catch (IOException ex) { ex.printStackTrace(); } } } }.start(); i= new ImageItem(null, image, 0, null); f.append(i); Grazie mille per il tempo che mi stai dedicando... Piano piano stiamo risolvendo il problema ![]() |
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Ad occhio mi sembra ok. Forse l'immagine è in un formato non supportato? Prova a salvarla su un file (usando Java SE).
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
#11 |
Senior Member
Iscritto dal: Dec 2008
Messaggi: 975
|
Ciao! Buongiorno!
Secondo me il problema è un altro... Ho aperto il codice che mi viene restituito con il get nel mio browser e si apre la pagina mentre se prendo singolarmente gli url restituiti cioè img o src non si apre niente... Cosa vuol dire? Che devo visualizzare il codice ottenuto come una pagina web? Sinceramente mi sta mandando in tilt questa situazione :S |
![]() |
![]() |
![]() |
#12 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
E' possibile che lo script php a cui puntano i link non restituisca un'immagine nel caso in cui il browser non appartenga ad uno dei noti.
Da un prova a me risulta che l'url dell'immagine restituisce non un'immagine ma una scritta, quando eseguito al di fuori del browser. Se così fosse, allora ti basterebbe presentare a video quella scritta (come se si trattasse di un browser non in grado di visualizzare immagini). Dovresti provare a contattare l'autore del banner per sapere se questo comportamento rientri nella "visualizzazione di pagine html" indicata nei requisiti.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 19:29.