1. Nimm jetzt an unserem AGM - Gewinnspiel teil - Informationen zum M1, A2 und A8 findest Du hier, hier und hier!
  1. Unicate, 27.01.2011 #1
    Unicate

    Unicate Threadstarter Android-Experte

    Hallo alle zusammen!

    Ich mache einen einfachen HTTP Request (POST) auf einen Server. Der InputStream vom response geht direkt in einen saxparser. Der hört allerdings bei der hälfte der xml auf,
    die zurückkommen soll. Die xml ist um die 1000 Zeilen groß.
    Wenn ich den SELBEN Parser auf dem normalen Rechner laufen lasse ist alles ok.

    Was ist hier nicht ok?
    Ist die xml zu groß? - Wenn ja, wie kann ich das umgehen?
     
  2. swordi, 27.01.2011 #2
    swordi

    swordi Gewerbliches Mitglied

    was heißt, "der hört bei der hälfte auf"

    bekommst dann einen ANR?
     
  3. Unicate, 27.01.2011 #3
    Unicate

    Unicate Threadstarter Android-Experte

    Naja die endDocument Funktion im ParserHandler wird eher aufgerufen, als der Parsing vorgang beendet ist. Kein ANR, da der Request asynchron ist.

    Auf dem PC geht das 1a, selber Handler.

    Hier mal der code für den request:

    PHP:
    HttpClient client = new DefaultHttpClient();
    HttpPost post = new HttpPost(url);
    post.addHeader("Connection""keep-alive");
    SessionIdRequest request = new SessionIdRequest();
    StringEntity content = new StringEntity(request.toString());
    content.setContentType("application/x-www-form-urlencoded");
    post.setEntity(content);
    HttpResponse response client.execute(post);
    if(
    response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {                
        
    SAXParserFactory factory SAXParserFactory.newInstance();
        
    // factory.setValidating(false); // uncommenting doesnt change anything
        // create SAX-parser...
        
    javax.xml.parsers.SAXParser parser factory.newSAXParser();
        
    // .. define our handler:
        
    SessionIdHandler handler = new SessionIdHandler();                
        
    // and parse:
        
    try {
            
    parser.parse(new InputSource(new  InputStreamReader(response.getEntity().getContent(), "ISO-8859-1")), handler);
            
    // hier kann per debugger gestoppt werden => keine Exception beim parsen
            
    handler.doSmth();
        } catch (
    Exception e) {
            
    Log.d(TAG"error while parsing");
        }
        
    }
    Der Code befindet sich in einer AsyncTask Klasse im "doInBackground"-Teil
     
    Zuletzt bearbeitet: 27.01.2011
  4. Unicate, 27.01.2011 #4
    Unicate

    Unicate Threadstarter Android-Experte

    Bitte vergesst die Frage ganz schnell...
    Falsche url...

    *peinlich*