C # webclient не может загрузить текст из сети - PullRequest
0 голосов
/ 02 июля 2018

Я работаю над проектом, чтобы получить текст с этого сайта . Но когда я тестировал его в Visual Studio, у меня была какая-то ошибка:

Значение не может быть нулевым. Имя параметра: решениеDirectory

Вот мой код:

using System;
using System.Net;

public class Program
{
    public static void Main()
    {
        WebClient client = new WebClient();
        String temp = client.DownloadString("http://www.hkex.com.hk/eng/stat/dmstat/dayrpt/hsio180629.htm");
        Console.Write(temp);
    }
}

1 Ответ

0 голосов
/ 02 июля 2018

Пожалуйста, используйте HttpClient, который является очень хорошим вариантом Сравнить с webClient И ваша проблема в том, что ваш проект (vcxproj) не настроен должным образом.

Создайте новое приложение просто и запустите этот код.

Здесь вы найдете разницу на самом деле

 Stream client = Task.Run(()=>new HttpClient().GetAsync("http://www.hkex.com.hk/eng/stat/dmstat/dayrpt/hsio180629.htm").Result.Content.ReadAsStreamAsync()).Result;
 using (var fileStream = new FileStream("D://data.txt", FileMode.Create, FileAccess.Write))
 {
     client.CopyTo(fileStream);
 }

Полный рабочий код: -

namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {
            Stream client = Task.Run(()=>new HttpClient().GetAsync("http://www.hkex.com.hk/eng/stat/dmstat/dayrpt/hsio180629.htm").Result.Content.ReadAsStreamAsync()).Result;
            using (var fileStream = new FileStream("D://data.txt", FileMode.Create, FileAccess.Write))
            {
                client.CopyTo(fileStream);
            }
        }
    }
}

С Await

namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {
            data();
            Console.ReadKey();
        }
        public static async void data()
        {
            var client = await new HttpClient().GetAsync("http://www.hkex.com.hk/eng/stat/dmstat/dayrpt/hsio180629.htm");
            var data= await client.Content.ReadAsStreamAsync();
            using (var fileStream = new FileStream("D://data.txt", FileMode.Create, FileAccess.Write))
            {
                data.CopyTo(fileStream);
            }
        }
    }
}
...