Frage

Ich weiß, dass dies eine grundlegende Frage sein soll, aber ich bin eine Mauer zu schlagen. Ich bin auf der Suche nach einer URL gehen / URI den resultierenden String downloaden, als ob ich eine Datei geöffnet hatte und sie dann in ein String-Variable raus.

Ich habe etwa mit IO.Stream und Net.httpxxx worden Füllung haben aber nicht geschafft, die Elemente zu erhalten in der richtigen Weise ausrichten.

ich „Der angegebene Pfades des Format wird nicht unterstützt“ von der Seite im Standard-Stream öffnen, weil es nicht in dem lokalen Dateisystem ... die Bit ich verstehe, das Bit ich nicht bekommen, ist ... wie erreiche ich die equivelent von:

Public Function GetWebPageAsString(pURL As String) As String
        Dim lStream As IO.StreamReader = New System.IO.StreamReader(pURL)
        Return lStream.ReadToEnd

End Function
War es hilfreich?

Lösung

Die kurze Antwort, in C #, sieht aus wie

using(System.Net.WebClient client = new System.Net.WebClient())
{
  string html = client.DownloadString("http://www.google.com");
}

Andere Tipps

WebClient.OpenRead () könnte das sein, was du bist suchen.

Beispiel von der Seite MSDN oben verlinkten:

 Dim uriString as String
 uriString = "http://www.google.com"

 Dim myWebClient As New WebClient()

 Console.WriteLine("Accessing {0} ...", uriString)

 Dim myStream As Stream = myWebClient.OpenRead(uriString)

 Console.WriteLine(ControlChars.Cr + "Displaying Data :" + ControlChars.Cr)
 Dim sr As New StreamReader(myStream)
 Console.WriteLine(sr.ReadToEnd())

 myStream.Close()

Diese Funktion lädt eine beliebige URI in eine Datei. Man könnte es leicht anpassen es in einen String var zu setzen:

public static int DownloadFile(String remoteFilename, String localFilename, bool enforceXmlSafe)
{
// Function will return the number of bytes processed
// to the caller. Initialize to 0 here.
int bytesProcessed = 0;

// Assign values to these objects here so that they can
// be referenced in the finally block
Stream remoteStream = null;
Stream localStream = null;
WebResponse response = null;            

// Use a try/catch/finally block as both the WebRequest and Stream
// classes throw exceptions upon error
try
{
    // Create a request for the specified remote file name
    WebRequest request = WebRequest.Create(remoteFilename);
    if (request != null)
    {
        // Send the request to the server and retrieve the
        // WebResponse object 
        response = request.GetResponse();
        if (response != null)
        {
            // Once the WebResponse object has been retrieved,
            // get the stream object associated with the response's data
            remoteStream = response.GetResponseStream();

            // Create the local file
            if (localFilename != null)
                localStream = File.Create(localFilename);
            else
                localStream = new MemoryStream();

            // Allocate a 1k buffer
            byte[] buffer = new byte[1024];
            int bytesRead;

            // Simple do/while loop to read from stream until
            // no bytes are returned
            do
            {
                // Read data (up to 1k) from the stream
                bytesRead = remoteStream.Read(buffer, 0, buffer.Length);

                // Write the data to the local file
                localStream.Write(buffer, 0, bytesRead);

                // Increment total bytes processed
                bytesProcessed += bytesRead;
            } while (bytesRead > 0);
        }
    }
}
catch (Exception e)
{
    Console.WriteLine(e.Message);
}
finally
{
    // Close the response and streams objects here 
    // to make sure they're closed even if an exception
    // is thrown at some point
    if (response != null) response.Close();
    if (remoteStream != null) remoteStream.Close();
    if (localStream != null) localStream.Close();
}

// Return total bytes processed to caller.
return bytesProcessed;
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top