以下は、RESTful Web サービスで使用するコードのスニペットです。create(Employee entity) メソッドに JSON データを送信しています。サーブレット リクエストからその JSON データを取得したいと考えています。
私が使用した System.out.println(..)メソッドが出力されます。これは、 stringBufferが NULL ではないことを意味します。それでも、「:」文字の後に何も出力されません [glassfish ロガーでこれをチェックしています]。さらに、POST されたエンティティはデータベースに正しく永続化されています。
これに関連する多くの質問をstackoverflowや他のサイトでグーグル検索しましたが、これまで試したことはありません.
public class EmployeeFacadeREST extends AbstractFacade<Employee> {
@Context private HttpServletRequest servletRequest;
@PersistenceContext(unitName = "EmployeePU")
private EntityManager em;
public EmployeeFacadeREST() {
super(Employee.class);
}
@POST
@Override
@Consumes({"application/xml", "application/json"})
public void create( Employee entity) {
StringBuffer stringBuffer = null;
try{
InputStream body = servletRequest.getInputStream();
stringBuffer = new StringBuffer();
int d;
while((d = body.read()) != -1){
stringBuffer.append((char)d);
}
}
catch(IOException e){
}
if(stringBuffer != null){
System.out.println("the entity is: " + stringBuffer.toString()); // this line gets printed
}
super.create(entity);
}
// more code
}
あなたの洞察に感謝します。