2012-07-18 6 views
6

Sto cercando di spingere alcuni dati a un URL (MDS_CS) per un BESHttpURLConnection conn.getRequestProperty restituire null

quando ho creato alcune intestazioni di richiesta nel mio codice, e inviare la richiesta, l'intestazione della richiesta submited è impostato su null.

Ecco il mio codice:

 HttpURLConnection conn =(HttpURLConnection)url.openConnection(); 
     conn.setDoInput(true);//For receiving the confirmation 
     conn.setDoOutput(true);//For sending the data 
     conn.setRequestMethod("POST");//Post the data to the proxy 
     conn.setRequestProperty("X-Rim-Push-ID", pushId); 
     conn.setRequestProperty("Content-Type", "text/html"); 
     conn.setRequestProperty("X-Rim-Push-Title", "-message"); 
     conn.setRequestProperty("X-Rim-Push-Type", "browser-message");     
     conn.setRequestProperty("X-Rim-Push-Dest-Port", "7874");    
     //Write the data 
     OutputStream out = conn.getOutputStream(); 
     out.write(data.getBytes()); 
     out.close(); 

     System.out.println(conn.getHeaderField("X-Rim-Push-ID")); 

l'ultima linea di ritorno nullo quando si tenta di recuperare il X-Rim-Push-Titolo è NULL solo X-Rim-push ID che viene recuperato in modo corretto,

aiutarmi

+1

Stai impostando richiesta puntello erties, ma ottenendo un campo di intestazione. È fatto apposta? Personalmente mi aspetterei che 'conn.getRequestProperty (" X-Rim-Push-ID ")' funzioni. – Thor84no

+3

per chiarire cosa sta dicendo @ Thor84no, 'getHeaderField()' serve per ottenere un'intestazione _response_, non un'intestazione di richiesta precedentemente impostata. – jtahlborn

+0

true, per favore, come posso ottenere l'intero post http con intestazioni e dati che ho inviato? la risposta dal server è 200, ma ancora non ho trasferito i miei dati al blackberry – dzgeek

risposta

12

Non sono proprio sicuro di quello che vuoi veramente fare. Ma per vedere cosa viene pubblicato sul server, dovrai pubblicarlo da solo e leggere i dati che ricevi lì.

Se si desidera visualizzare tutte le intestazioni di richiesta si potrebbe:

for (String header : conn.getRequestProperties().keySet()) { 
    if (header != null) { 
    for (String value : conn.getRequestProperties().get(header)) { 
     System.out.println(header + ":" + value); 
     } 
    } 
} 

O dopo il collegamento è possibile stampare le intestazioni di risposta:

for (String header : conn.getHeaderFields().keySet()) { 
    if (header != null) { 
    for (String value : conn.getHeaderFields().get(header)) { 
     System.out.println(header + ":" + value); 
     } 
    } 
} 
+0

sto usando un semplice metodo principale per eseguire la mia richiesta non riesco a eseguire il debug della richiesta inviata! come "postarlo per conto proprio e leggere" potrei farlo? – dzgeek

+0

Per postarlo sul proprio server, il più semplice sarebbe un servlet in un contenitore di servlet come tomcat. Ma non vedo perché ne hai davvero bisogno. Mentre scrivi tutti i dati nella tua richiesta, dovresti sapere cosa stai postando. Hai controllato come appare il tuo 'data', l'hai codificato correttamente? – morja

+0

gestione dal metodo post su un servlet? ho ragione ? i dati sono codificati! il server restituisce un codice di 200 indietro – dzgeek

1

io suggerirei di usare Apache HttpClient

final HttpClient client = new HttpClient(); 
final PostMethod method = new PostMethod(uri); 
method.addRequestHeader("X-Rim-Push-Title", "-message"); 
client.executeMethod(method); 
String responseBody = method.getResponseBodyAsString(); 
Header[] headers = method.getResponseHeaders(); 

HttpClient è un modo molto più potente di trattare con HTTP di HttpURLConnection.

0

Quando controllo i miei intestazioni presentati e della InputStream di richiesta, ottengo lo stato 200 ok, ma non viene inviato nulla al dispositivo

from server: 200 | OK 


=======REQUEST=============== 
request header:X-Rim-Push-ID:pushID:1342694818991 
request header:Host:win-uhgr7vs88uz.assabb.com:8080 
request header:Content-Length:19 
request header:X-Rim-Push-Title:-message 
request header:User-Agent:Java/1.6.0_18 
request header:POST /push?DESTINATION=bestest%40assa-associates.com&PORT=7874&REQUESTURI=/ HTTP/1.1:null 
request header:Content-Type:text/html 
request header:Accept:text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 
request header:Connection:keep-alive 
request header:X-Rim-Push-Dest-Port:7874 
request header:X-Rim-Push-Type:browser-message 
======Response=============== 
response header:Date:Thu, 19 Jul 2012 10:47:10 GMT 
response header:Content-Length:0 
response header:X-RIM-Push-ID:pushID:1342694818991 
response header:Via:MDS_5.0.3.26 
response header:x-rim-multidest-push-supported:true 
response header:Server:Apache-Coyote/1.1 
response header:x-rim-push-persisted:fals