java.io.IOException: ... является допустимым размером чанка - PullRequest
1 голос
/ 19 июля 2011

Я использую фреймворк Restlet и создаю веб-сервис для возврата XML с помощью DomRepresentation.Вот код:

public Representation toXml(Hashtale theHashtable)
  {
    try
    {
      DomRepresentation aDomRepresentation = new DomRepresentation( MediaType.APPLICATION_XML );

      Document aDocument = aDomRepresentation.getDocument();

      Element aElementRoot = aDocument.createElement("root");

      aDocument.appendChild(aElementRoot);

      Element aElementProperties =
        aDocument.createElement("properties");

      aElementRoot.appendChild(aElementProperties);

      // Add nodes to the element

      aDocument.normalizeDocument();

      return aDomRepresentation;

    }
    catch (Exception aException)
    {
      return null;
    }
  }

Я также попробовал TEXT_XML, APPLICATION_W3C_SCHEMA MediaType.

На стороне клиента Restlet я использую следующий фрагмент кода для получения и анализа XML:

  InputSource aInputSource = new InputSource(getResponseEntity().getStream());

  XMLReader aXmlReader = XMLReaderFactory.createXMLReader("org.apache.xerces.parsers.SAXParser");

  HtHandler ahtHandler = new HtHandler();

  aXmlReader.setContentHandler(ahtHandler);

  aXmlReader.parse(aInputSource);

  return ahtHandler.getResult();

HtHandler - это класс, расширяющий DefaultHandler.

Каждый раз, когда я получаю это сообщение об ошибке:

java.io.IOException: <encoding="UTF-8" standalone="no"?><root><properties><workflow_id>0</workflow_id><name>name</name><id>1</id></properties></root>> is an invalid chunk size
    at org.restlet.engine.http.io.ChunkedInputStream.readChunkSize(ChunkedInputStream.java:232)
    at org.restlet.engine.http.io.ChunkedInputStream.initializeChunk(ChunkedInputStream.java:161)
    at org.restlet.engine.http.io.ChunkedInputStream.canRead(ChunkedInputStream.java:97)
    at org.restlet.engine.http.io.ChunkedInputStream.read(ChunkedInputStream.java:182)

Я проверил, большинство XML-файловразбираются правильно.Я не знаю почему, всегда есть один XML, который не анализируется правильно, у этого XML есть еще один «>» в ​​конце.

Любые идеи будут очень полезны!

Спасибозаблаговременно!Ikeforward

1 Ответ

0 голосов
/ 20 июля 2011

Вот черновик предложения записать ваш .xml в файл журнала:

log4j.properties:

# Define the root logger with appender file
log4j.rootLogger = DEBUG, FILE
# Define the file appender
log4j.appender.FILE=org.apache.log4j.FileAppender
# Set the name of the file
log4j.appender.FILE.File=${log}/log.out    
# Set the immediate flush to true (default)
log4j.appender.FILE.ImmediateFlush=true    
# Set the threshold to debug mode
log4j.appender.FILE.Threshold=debug    
# Set the append to false, overwrite
log4j.appender.FILE.Append=false    
# Define the layout for file appender
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%m%n

Затем какой-нибудь код Java, подобный этому:

import org.apache.log4j.Logger;
...        
    public void logTheXML(String[] args) {
        String xmlstring = arg[0];
        Logger logger =Logger.getLogger("FILE");
        logger.info("xml data\n" + xmlstring + "\n");
    }
}
...