【问题标题】:iCal from API GET AirBnb returns "The remote server returned an error: (403) Forbidden" ASP.NET来自 API GET AirBnb 的 iCal 返回“远程服务器返回错误:(403) Forbidden”ASP.NET
【发布时间】:2019-01-31 14:23:56
【问题描述】:

我想从提供 AirBnb 的 iCal 导入日期。 我正在使用一些名为 iCal.Net 的块开发 ASP.NET MVC 应用程序。

代码:

public ActionResult Index()
    {

        const string airbnbCalendar = "https://www.airbnb.com/calendar/ical/1111111.ics?s=zkdjhfkjsdzkhfkkjsadjkfhskjdfhjk";

        Calendar calendar;
        using (var client = new WebClient())
        {
            byte[] file = null;

            file = client.DownloadData(airbnbCalendar);
            Stream stream = new MemoryStream(file);
            calendar = Calendar.Load(stream);
        }

        return View();
    }

在线客户端出现错误。DownloadData(airbnbCalendar):

远程服务器返回错误:(403) Forbidden

我用谷歌搜索了一下,发现出于某种原因我必须“模仿”一个网络浏览器来处理这个请求。这是airbnb forum的链接

如何将我的请求转换为 CURL 请求?为了让airbnb给我正确的数据?

附:当我将 airbnb url 复制到浏览器时,我得到了正确的 .ics 文件

出于安全原因,我更改了 url 地址。

【问题讨论】:

    标签: c# asp.net icalendar


    【解决方案1】:

    User-Agent 是通过请求标头传输的。因此,向 web 客户端添加一个适当的标头,如 here 所示。

    【讨论】:

      【解决方案2】:

      这就是我添加的具体内容并且有效:

      webClient.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");
      

      【讨论】:

        【解决方案3】:

        我将request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36"; 添加到我的HttpWebRequest 对象中,以便从AirBnb 下载iCal 数据

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-01-22
          相关资源
          最近更新 更多