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 для запроса, имитирующего вызов браузера.