2013-08-13 7 views
17

Ich mag Anfrage senden und von Antwort lesen Header Servlet. Also versuche ich es dies mit:Get Header von HttpURLConnection Objekt

URL url = new URL(contextPath + "file_operations"); 
    HttpURLConnection conn = null; 
    try { 
     conn = (HttpURLConnection) url.openConnection(); 
     conn.setDoOutput(true); 
     conn.setDoInput(true); 
     conn.setRequestMethod("POST"); 
     conn.setRequestProperty("charset", "utf-8"); 
     conn.setUseCaches(false); 
     conn.setConnectTimeout(1000 * 5); 
     conn.connect(); 

     conn.getHeaderField("MyHeader") 
     ..... 

Aber empfangene Header sind immer null. Servlets funktioniert gut (ich versuchte, die Arbeit mit Servlet Standalone-HTTP-Client)

+0

Ist es anschließen oder jede Ausnahme geben ?? –

Antwort

16

Stellen Sie sicher, Sie bekommen die erfolgreiche Antwort, bevor Sie versuchen, die Kopfzeilen zu holen. Dies ist, wie können Sie für Ihre Antwort überprüfen:

int status = conn.getResponseCode(); 

if (status == HttpURLConnection.HTTP_OK) { 
      String = conn.getHeaderField("MyHeader"); 

    } 

Auch die Servlet Antwort sicherstellen, dass keine Antwort eine Umleitung ist, wenn umgeleitet alle Sitzungsinformationen, einschließlich Header verloren.

3

Vor der connect (direkt nach setRquestPropert, setDoOutput a.s.o):

for (Map.Entry<String, List<String>> entries : conn.getRequestProperties().entrySet()) {  
    String values = ""; 
    for (String value : entries.getValue()) { 
     values += value + ","; 
    } 
    Log.d("Request", entries.getKey() + " - " + values); 
} 

Vor disconnect (nach Antwort a.s.o Lesen):

for (Map.Entry<String, List<String>> entries : conn.getHeaderFields().entrySet()) { 
    String values = ""; 
    for (String value : entries.getValue()) { 
     values += value + ","; 
    } 
    Log.d("Response", entries.getKey() + " - " + values); 
}