C# API Call не работает с HttpWebRequest, но работает с почтальоном

У меня есть следующий запрос почтальона: введите описание изображения здесь введите описание изображения здесь

Который возвращает меня, как ожидалось, URL: введите описание изображения здесь

Я пытаюсь имитировать эту операцию с помощью приложения.Net Core 2.0, используя следующий код:

static void Main(string[] args)
{
    ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

    var httpWebRequest = (HttpWebRequest)WebRequest.Create("https://epaper.20minuten.ch/index.cfm/epaper/1.0/getEditionDoc");
    httpWebRequest.ContentType = "application/json";
    httpWebRequest.Method = "POST";

    var serializer = new Newtonsoft.Json.JsonSerializer();
    using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
    {
        using (var tw = new Newtonsoft.Json.JsonTextWriter(streamWriter))
        {
            serializer.Serialize(tw,
                new
                {
                    editions = new[]
                    {
                            new
                            {
                                defId = "648",
                                publicationDate = "2018-03-06"
                            }
                    },
                    isAttachment = true,
                    fileName = "Gesamtausgabe_Lausanne_2018-03-06.pdf"
                });
        }
    }
    var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
    using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
    {
        var responseText = streamReader.ReadToEnd();
        Console.ReadLine();
    }
}

Но я получаю 500 ошибок. Что я упустил?

2 ответа

Решение

Почтальон может генерировать широкий спектр кода. Чтобы использовать RestSharp с C#, нажмите кнопку кода / ссылку и выберите C# (RestSharp) из выпадающего списка.

Это должно напоминать:

введите описание изображения здесь

Когда-нибудь я внесу генератор для HttpClient и HttpWebRequest

Я предполагаю, что проблема может быть связана с тем, что вы вызываете внешний URL-адрес, могут быть случаи, когда они блокируют такие запросы при сканировании. Попробуйте установить useragent для запроса, имитирующего вызов браузера.

Другие вопросы по тегам