2009-12-04 14 views
7

Sto creando una connessione HTTPS e impostando la proprietà richiesta, come GET:Come si inviano i dati tramite il metodo GET?

_httpsConnection = (HttpsConnection) Connector.open(URL, Connector.READ_WRITE); 
_httpsConnection.setRequestMethod(HttpsConnection.GET); 

Ma come faccio a inviare i parametri GET? faccio a impostare la proprietà richiesta in questo modo:

_httpsConnection.setRequestProperty("method", "session.getToken"); 
_httpsConnection.setRequestProperty("developerKey", "value"); 
_httpsConnection.setRequestProperty("clientID", "value"); 

o devo scrivere nel flusso di output della connessione?

oppure devo inviare il parametro/i valori aggiungendolo all'URL?

+2

Che lingua è questa? – monksy

+0

Non sono uno sviluppatore di blackberry. Ma puoi testare facilmente il tuo codice usando lo sniffer di rete (overkill IMO) o un semplice script sul lato server che mostrerà solo le informazioni della tua richiesta. Ad esempio in php puoi usare: http://www.php.net/manual/en/reserved.variables.request.php –

risposta

8

Calling Connection.setRequestProperty() imposterà l'intestazione della richiesta, che probabilmente non è quello che si vuole fare in questo caso (se mi chiedete penso definendolo setRequestHeader sarebbe stata una scelta migliore). Alcuni proxy possono rimuovere o riscrivere il nome di intestazioni non standard, quindi è meglio attenersi alla convenzione di trasmissione dei dati nell'URL GET tramite parametri URL.

Il modo migliore per farlo su un BlackBerry è quello di utilizzare la classe URLEncodedPostData per codificare correttamente i parametri URL:

URLEncodedPostData data = new URLEncodedPostData("UTF-8", false); 
data.append("method", "session.getToken"); 
data.append("developerKey", "value"); 
data.append("clientID", "value"); 
url = url + "?" + data.toString(); 
2

Sì, le intestazioni e le proprietà sono praticamente tutto ciò che puoi inviare in un GET. Inoltre, sei limitato a un certo numero di caratteri, che dipende dal browser: mi sembra di ricordare circa 1024 o 2000, in genere.

+0

Ehi devo inviare il parametro/i valori tramite l'intestazione o semplicemente aggiungerlo all'URL – Bohemian

+0

puoi semplicemente aggiungerlo all'URL –

+0

Non hai idea di come funzioni il tuo ambiente, ma alla fine i parametri della tua richiesta saranno inclusi nell'URL. Puoi farlo direttamente (usa & per separare le coppie chiave/valore, = tra chiave e valore, caratteri URL-escape nelle stringhe) o, si spera, lasciare che la tua API faccia quella roba per te automagicamente. –

5

HTTP GET parametri dei dati Invia come coppie chiave/valore codificati all'interno di URL, proprio come: regole di follow

GET /example.html      // without parameters 
GET /example.html?Id=   1  // with one basic parameter 
GET /example.html?Id=1&Name=John%20Doo // with two parameters, second encoded 

Nota per i separatori di carattere:

? - split URL in two pieces: adddress to left and paremeters to right 
& - must be used to separate on parameter from another 

è necessario conoscere le piattaforma specifica codifica stringa nativa funzione. Javascript utilizza escape, C# utilizza HttpUtility.UrlEncode

Problemi correlati