2012-09-27 18 views
6

ile nasıl erişilir? HTTP isteğinin gövdesine doğrudan erişmenin bir yolunu arıyorum. Aslında, kodumda vücutta farklı parametreler alıyorum ve tam olarak ne alacağımı bilmiyorum. Ayrıca, olabildiğince esnek olmak istiyorum: Değişebilen farklı taleplerle uğraşıyorum ve bunları her bir talep türü için (GET, POST, ...) tek bir yöntemle ele almak istiyorum. Bu esneklik seviyesini RESTEasy ile halletmenin bir yolu var mı? Başka bir şeye geçmeli miyim?HTTP isteğinin gövdesine RESTEasy

+0

MessageBodyReaderInterceptor kullanmayı denedim, ancak istediğimi yapmak için yapıldığından bile emin değilim. Bildiğim kadarıyla, genellikle RESTEasy ile bir POJO veya birkaç parametreyi kabul eden yöntemler yazıyorsunuz ama onları tanımıyorum, bu yüzden onları belirtemem ... – Raffo

cevap

5

this answer'da verilen kod uyarınca, HTTPServletRequest Nesnesine erişebilirsiniz.

HTTPServletRequest nesnesine sahip olduğunuzda, istek gövdesine her zamanki gibi erişebilmeniz gerekir. Bir örnek şu olabilir:

String requestBody = ""; 
StringBuilder stringBuilder = new StringBuilder(); 
BufferedReader bufferedReader = null; 
try { 
    InputStream inputStream = request.getInputStream(); 
    if (inputStream != null) { 
     bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); 
     char[] charBuffer = new char[128]; 
     int bytesRead = -1; 
     while ((bytesRead = bufferedReader.read(charBuffer)) > 0) { 
      stringBuilder.append(charBuffer, 0, bytesRead); 
     } 
    } else { 
     stringBuilder.append(""); 
    } 
} catch (IOException ex) { 
    throw ex; 
} finally { 
    if (bufferedReader != null) { 
     try { 
      bufferedReader.close(); 
     } catch (IOException ex) { 
      throw ex; 
     } 
    } 
} 
requestBody = stringBuilder.toString(); 
İlgili konular