2012-07-18 28 views
6

Estoy intentando empujar algunos datos a una dirección URL (MDS_CS) para un BESHttpURLConnection conn.getRequestProperty devolver null

cuando me puse algunas cabeceras de petición en mi código, y presentar la solicitud, la cabecera de la solicitud es submited establecido en nulo.

aquí es mi código:

 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")); 

la última línea de retorno nula cuando intento para recuperar el X-Borde-Push-Título es NULL única X-Borde-Push- Identificación que se recupera correctamente,

por favor ayúdame

+1

Está configurando la solicitud de prop erties, pero obteniendo un campo de encabezado. ¿Eso es a propósito? Personalmente, esperaría que 'conn.getRequestProperty (" X-Rim-Push-ID ")' funcione. – Thor84no

+3

para aclarar lo que dice @ Thor84no, 'getHeaderField()' es para obtener un encabezado _response_, no un encabezado de solicitud que haya establecido previamente. – jtahlborn

+0

cierto, por favor, ¿cómo podría obtener la publicación completa de http con los encabezados y los datos que envié? la respuesta del servidor es 200, pero aun así no obtuve mis datos para blackberry – dzgeek

Respuesta

12

No estoy seguro de lo que realmente quieres hacer. Pero para ver qué se publica en el servidor, debe publicarlo y leer los datos que recibe allí.

Si quieres ver todas las cabeceras de petición usted podría:

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

O después de conectar puede imprimir los encabezados de respuesta:

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

estoy usando un método principal simple para ejecutar mi solicitud ¡no puedo depurar la solicitud enviada! cómo "publícalo tú mismo y lee" ¿podría hacerlo? – dzgeek

+0

Para publicarlo en su propio servidor, lo más fácil sería un servlet en un contenedor de servlets como tomcat. Pero no veo por qué realmente necesitas esto. Al escribir todos los datos en su solicitud, debe saber lo que está publicando. ¿Revisó cómo se ve su 'datos', lo codificó correctamente? – morja

+0

manejo desde el método de publicación en un servlet? estoy en lo correcto? ¡los datos están codificados! el servidor devuelve un código 200 atrás – dzgeek

1

se recomienda usar 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 es una forma mucho más poderosa de tratar con HTTP que HttpURLConnection.

0

Cuando compruebo mis cabeceras presentados y el flujo de entrada de la solicitud, obtengo el estado de 200 ok, pero no se envía nada 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