welchen string muss ich senden um *.html zu erhalten



  • Hallo,

    mit meiner Anwendung möchte ich den Inhalt einer Webseite auslesen, bei manchen Seiten geht das auch aber andere Seiten schicken mir das zurück:

    HTTP/1.1 406 Not Acceptable
    Date: Wed, 14 Mar 2007 17:58:51 GMT
    Server: Apache/1.3.37
    Connection: close
    Content-Type: text/html; charset=iso-8859-1
    
    <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
    <HTML><HEAD>
    <TITLE>406 Not Acceptable</TITLE>
    </HEAD><BODY>
    <H1>Not Acceptable</H1>
    An appropriate representation of the requested resource /test could not be found on this server.<P>
    <HR>
    <ADDRESS>Apache/1.3.37 Server at www021.lifemedien.de Port 80</ADDRESS>
    </BODY></HTML>
    

    ich denke mal das liegt daran, daß ich mich bei meiner seitenanforderung nicht als webbrowser ausweise, denn da öffnen sich die aufgerufenen seiten korrekt. ich sende folgendes:

    sprintf(send_buf,"GET /%s HTTP/1.0\nUser-Agent: Mozilla/4.1\n\n",site);
      if((send(s,send_buf,strlen(send_buf),0))<strlen(send_buf))
        perr_exit("Cannot send Data",WSAGetLastError());
    

    was much ich senden oder an anderer stelle ändern um die Seite so geschickt zu bekommen wie ich sie im browser sehe? Hoffe ihr habt eine Antwort für mich



  • benutz bitte mal "\r\n" anstatt "\n"



  • schick noch den hostnamen mit:

    Host: www.seite.de
    

    Hintergrund: Einige Webserver sind für mehrere Domains zuständig. Ohne Hostnamen wissen diese nicht welche seite sie nun zurückliefern sollen.



  • ok Leute ich bekomme es nicht hin, kann mir mal einer den korrekten sendstring geben um diese seite aufzurufen:

    http://www.rickert.biz/test.txt

    Ich hoffe irgendjemand hier hat eine Ahnung wie das geht, danke schon mal.





  • Ok ich habs, mein Fehler war, daß ich meinen string nicht mit \n\n abgeschlossen hatte nachdem ich den host mit eingebaut hatte. Jetzt geht's so:

    sprintf(send_buf,"GET /%s HTTP/1.0\nUser-Agent: Mozilla/4.1\nHost: %s\n\n",site, host);
    


  • Hugo Bin schrieb:

    Ok ich habs, mein Fehler war, daß ich meinen string nicht mit \n\n abgeschlossen hatte nachdem ich den host mit eingebaut hatte. Jetzt geht's so:

    sprintf(send_buf,"GET /%s HTTP/1.0\nUser-Agent: Mozilla/4.1\nHost: %s\n\n",site, host);
    

    Du hast den Kommentar von r0nny nicht gelesen oder nicht verstanden. Die Zeilen in einem http-Request MÜSSEN mit \r\n terminiert sein. Daß es auch so funktioniert, liegt nur an der tolleranz der Webserver. Per Standard (rfc 2616 wie bereits erwähnt) könnte ein Server den Request aber auch ablehnen.

    Tntnet


Anmelden zum Antworten