HttpURLConnection conn.getRequestProperty return null

I am trying to push some data to a URL (MDS_CS) for BES

when I set some request headers in my code and submit the request, the sent request header is null .

here is my code:

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

the last line returns null when I try to get the X-Rim-Push-Title NULL only the X-Rim-Push-ID , which is correctly retrieved,

Please help me

+6
source share
3 answers

Not quite sure what you really want to do. But to see what is sent to the server, you have to publish it yourself and read the data that you get there.

If you want to see all the REQUEST headers, you can:

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

Or after connecting you can print the RESPONSE headers:

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

I would suggest using 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 is a much more efficient way to work with HTTP than HttpURLConnection.

+1
source

When I check the submitted headers and the request input stream, I get a status of 200 ok, but nothing is sent to the device

 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 
0
source

Source: https://habr.com/ru/post/920810/


All Articles