Soru HttpUrlConnection nesnesinden başlık al


Servlet'e istek göndermek ve yanıtlardan başlıkları okumak istiyorum. Ben de bunu kullanarak deneyin:

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

Ancak alınan başlıklar her zaman null. Servlet iyi çalışıyor (bağımsız HTTP istemcisi kullanarak servlet ile çalışmayı denedim)


18
2017-08-13 06:19


Menşei


Bağlanıyor veya herhangi bir istisna veriyor mu? - Deepak Tiwari


Cevaplar:


Başlıkları almaya çalışmadan önce başarılı yanıt aldığınızdan emin olun. Yanıtınızı şu şekilde kontrol edebilirsiniz:

int status = conn.getResponseCode();

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

    }

Ayrıca, Servlet yanıtının yönlendirme yanıtı olmadığından emin olun, başlıklar da dahil olmak üzere tüm oturum bilgilerini yeniden yönlendirirseniz kaybedilir.


20
2017-08-13 06:31





Bağlantıdan önce (setRquestPropert'den hemen sonra 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 );
}

Bağlantıyı kesmeden önce (yanıt a.s.o okuduktan sonra):

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

5
2018-06-29 09:29