首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >浏览Javascript生成的网页

浏览Javascript生成的网页
EN

Stack Overflow用户
提问于 2018-05-30 19:39:23
回答 1查看 42关注 0票数 -3

有一个在线表单(https://servizi.ivass.it/RuirPubblica/),您可以在其中进行搜索(只需进行空白搜索)。对于它给出的每个结果,我需要单击结果并导出详细信息页面的第5个表中的列表。

所以基本上我想做一个软件来帮我做到这一点:

  1. 使用我自己的criteria
  2. Access提交搜索结果项的每一页
  3. 访问每一项详细信息页
  4. 获取第5个标记中的行,以便我可以将它们追加到列表

当我点击“搜索”按钮时,我用Fiddler检查了POST请求中使用的参数,并尝试用.Net做同样的事情。如果我尝试用HttpClient访问基地址,它会返回正确的搜索表单的超文本标记语言,但当我提交以下带有搜索参数的POST请求时,我得到一个网页,显示错误“警告:会话过期”。

如果我在没有访问主页的情况下单独调用搜索POST,也会发生这种情况,所以我不确定这是否与在两个请求之间保持会话alibe有关。

代码语言:javascript
运行
复制
public MainWindow()
        {
            InitializeComponent();

            var cookieJar = new CookieContainer();
            var handler = new HttpClientHandler
            {
                CookieContainer = cookieJar,
                UseCookies = true,
                UseDefaultCredentials = false
            };

            client = new HttpClient(handler)
            {
                BaseAddress = new Uri("https://servizi.ivass.it/RuirPubblica/Search.faces")
            };
        }

        private async Task TryHttp()
        {
            // Access the search page
            var response = await client.GetAsync(client.BaseAddress);

            var responseString = await response.Content.ReadAsStringAsync();

            // Perform the search
            var values = new Dictionary<string, string>
            {
                { "FormSearch", "FormSearch" },
                { "FormSearch:j_id_jsp_558348152_13", "PG" },
                { "FormSearch:j_id_jsp_558348152_16", "custom" },
                { "FormSearch:SecE", "on" },
                { "FormSearch:matricola", "" },
                { "FormSearch:ragioneSociale", "" },
                { "FormSearch:provincia", "NA" },
                { "FormSearch:SearchButton", "Ricerca" },
                { "javax.faces.ViewState", "j_id1:j_id5" },
            };

            var content = new FormUrlEncodedContent(values);

            response = await client.PostAsync(client.BaseAddress, content);

            // Here I'm getting a web page showing the error "Warning: Session expired"
            responseString = await response.Content.ReadAsStringAsync();
        }

        private void ButtonBase_OnClick(object sender, RoutedEventArgs e)
        {
            TryHttp();
        }
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50603727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档