2012-07-18 15 views
6

Próbuję wcisnąć jakieś dane do adresu URL (MDS_CS) dla BESHttpURLConnection conn.getRequestProperty zwróci null

kiedy ustawić kilka nagłówków żądania w moim kodu i złożyć wniosek, nagłówek zgłosił prośba jest ustawiono na null.

tutaj jest mój kod:

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

ostatnia linia zwróci null, gdy próbuję pobrać X-rim-Push-title jest NULL tylko X-Rim-Push- ID który jest pobierany prawidłowo,

pomóż mi

+1

Ustawiasz żądanie wniosku właściwości, ale uzyskanie pola nagłówka. Czy to celowo? Osobiście oczekiwałbym, że 'conn.getRequestProperty (" X-Rim-Push-ID ")' zadziała. – Thor84no

+3

, aby wyjaśnić, co mówi @ Thor84no, 'getHeaderField()' służy do uzyskania nagłówka _response_, a nie nagłówka żądania, który wcześniej ustawiłeś. – jtahlborn

+0

prawda, proszę, jak mogę uzyskać pełny post HTTP z nagłówkami i danymi, które wysłałem? odpowiedź z serwera wynosi 200, ale nadal nie dostałem moich danych zepchniętych na blackberry – dzgeek

Odpowiedz

12

Nie jestem do końca pewien, co tak naprawdę chcesz zrobić. Jednak aby zobaczyć, co jest wysyłane na serwer, musisz opublikować go na swoim komputerze i odczytać dane, które tam otrzymasz.

Jeśli chcesz zobaczyć wszystkie nagłówki żądania możesz:

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

Albo po podłączeniu można wydrukować nagłówki odpowiedzi:

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

Używam prostej głównej metody do wykonania mojej prośby, nie mogę debugować wysłanego żądania! jak "umieść go na własną rękę i czytaj" czy mogę to zrobić? – dzgeek

+0

Aby opublikować go na własnym serwerze, najłatwiej byłoby serwletem w kontenerze serwletów, takim jak tomcat. Ale nie rozumiem, dlaczego naprawdę tego potrzebujesz. Podczas pisania wszystkich danych w swojej prośbie powinieneś wiedzieć, co publikujesz. Czy sprawdziłeś, jak wygląda "dane", czy zakodowałeś je poprawnie? – morja

+0

obsługa z metody post na serwletu? czy mam rację ? dane są zakodowane! serwer zwraca kod 200 z powrotem – dzgeek

1

Sugerowałbym użyciu 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 to znacznie skuteczniejszy sposób radzenia sobie z HTTP niż HttpURLConnection.

0

Kiedy mogę sprawdzić nagłówki złożonych i InputStream żądania, otrzymuję status 200 ok, ale nic nie jest wysyłane na urządzenie

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 
Powiązane problemy