HttpWebRequest reades pouze homepage

hlasů
-1

Dobrý den jsem se snažil přečíst stránku pomocí HttpWebRequest podobného

    string lcUrl = http://www.greatandhra.com;
    HttpWebRequest loHttp = (HttpWebRequest)WebRequest.Create(lcUrl);
    loHttp.Timeout = 10000;     // 10 secs
    loHttp.UserAgent = Code Sample Web Client;
    HttpWebResponse loWebResponse = (HttpWebResponse)loHttp.GetResponse();
    Encoding enc = Encoding.GetEncoding(1252);  // Windows default Code Page
    StreamReader loResponseStream =
       new StreamReader(loWebResponse.GetResponseStream(), enc);
    string lcHtml = loResponseStream.ReadToEnd();
    mydiv.InnerHtml = lcHtml;
   // Response.Write(lcHtml);
    loWebResponse.Close();
    loResponseStream.Close();

dovedu schopen číst tuto stránku a svázat mydiv. Ale když jsem klikněte na některý z odkazů v tom, že oddíl se nezobrazuje žádný výsledek. Vzhledem k tomu, moje žádost doesnt obsahovat celý web. Takže to, co budeme dělat teď.

Může někdo zkopírovat můj kód a otestovat jej plz

Nagu

Položena 09/07/2009 v 07:01
zdroj uživatelem
V jiných jazycích...                            


6 odpovědí

hlasů
0

Kód jste uvedení uvnitř .InnerHtml ze div obsahuje celou stránku (včetně <html> <body> </ html> a </ body>), které mohou způsobit MIRIAD problémů s libovolným počtem prohlížečů.

Já bych to buď přesunout do iframe, nebo uvažovat o nějaké analýze HTML na vzdáleném místě a zobrazení transformovaného verzi (tj. Pás HTML, tělo, meta tagy, nahradit nějaký odkaz URL, atd.)

Odpovězeno 09/07/2009 v 07:10
zdroj uživatelem

hlasů
1

Jsem si docela jistý, že nelze vložit celou stránku v DIV bez porušení něco. Ve skutečnosti celá hlava tag může být stále zcela vynechá (a jakýkoliv javascriptový kód tam nemusí být spuštěn). Vzhledem k tomu, co se zdá, že chcete dělat, doporučuji použít IFRAME s dynamickým src, který bude také snad zvednout nějaký tlak na vašem serveru (což by neměl být zodpovědný za načítání html, které mají být zrcadlené už).

Odpovězeno 09/07/2009 v 07:10
zdroj uživatelem

hlasů
1

Pokud opravdu chcete celou stránku HTML vložené do druhé, pak je IFRAME tag je pravděpodobně z nich použít, spíše než DIV.

Spíše než by museli vytvořit žádost o web a mít všechny, že kód k načtení vzdáleného stránku, stačí nastavit atribut src IFRAME do bodu ot stránku, kterou chcete, aby zobrazení.

Například, něco takového značkování:

<iframe src="<%=LcUrl %>" frameborder="0"></iframe>

kde LcUrl je vlastnost na vaší kódem na pozadí stránky, která odhaluje svou řetězec lcUrl ze vzorku.

Nebo můžete udělat IFRAME runat = „server“ a nastavte jeho vlastnost src programatically (nebo dokonce aplikovat na innerHTML způsobem sismilar do svého kódu vzorku, pokud jste opravdu chtěli).

Odpovězeno 09/07/2009 v 07:23
zdroj uživatelem

hlasů
0

Ale když jsem klikněte na některý z odkazů v tom, div se nezobrazuje žádný výsledek

Asi proto, že odkazy na stránce pro stažení jsou relativní ... Pokud jste právě zkopírujte kód HTML do DIV ve vaší straně, se domnívá, že prohlížeč odkazy relativní k aktuální URL: neví o původu tohoto obsahu. Myslím, že řešením je analyzovat stažený HTML a převést relativní adresy URL v href atributů absolutních URL

Odpovězeno 09/07/2009 v 07:27
zdroj uživatelem

hlasů
0

Chcete-li jej vložit, je nutné, aby se svlékli všechno kromě části těla. To znamená, že budete muset analyzovat svůj řetězec lcHTML pro <body> .... a před odstranit všechno a includeing tělo značku. Je také nutné strhnout všechno od </ body>. Pak je potřeba analyzovat řetězec všech výskytů <a href=".....">, které nezačínají na http: // a obsahují http://www.greatandhra.com nebo nastavit <base target =“ http://www.greatandhra.com "> v části hlavy.

Pokud nechcete vložit, jednoduše zrušte vyrovnávací paměti odezvy a streamovat lcHTML řetězec zpět do prohlížeče.

PS: Musel jsem psát všechno http s mezerami, aby bylo možné tento post.

Odpovězeno 09/07/2009 v 07:34
zdroj uživatelem

hlasů
0

Zní to jako to, co se snažíte udělat, je zobrazit jiný web vložit na svůj web. Pro tuto práci tím, že upustí ho do div budete muset extrahovat kód mezi značky BODY, protože by neměla být platná s html a hlavou ve středu jinou stránku.

Tyto odkazy nebudou fungovat, protože jste teď vzít tuto stránku z kontextu, ve vašem webu, takže byste také muset přepsat všechny odkazy na stránky, které jsou relativní (tj nezačínají http), přejděte na stránku na svých stránkách, které budou následně načíst stránku dalším stránkám a jejich zobrazení zpět na vaše stránky, nebo můžete přidat adresu uRL webu jste chytil na začátku všech vzájemných vazeb tak, aby odkaz zpět na tomto místě.

Odpovězeno 09/07/2009 v 07:37
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more