0

我想获得通过表单发布结果的网站的响应。我尝试过使用 WebClient、WebRequests 等。

当前代码:

using (var client = new WebClient())
{
    var buffer = client.UploadValues("https://secure.monroecc.edu/pls/bpr1/bwzkfcls.P_GetCrse", "POST", vals);
    return Encoding.UTF8.GetString(buffer, 0, buffer.Count());
}

也很确定当前的代码没有错,只是缺少了一些东西。当我确实得到网站的回复时,它是错误的,它是您填写表格的页面。

如果您尝试获取网站,则会在网站本身上导致此错误(不发布随之而来的变量):

VARIABLES IN FORM NOT IN PROCEDURE: 
NON-DEFAULT VARIABLES IN PROCEDURE NOT IN FORM: TERM_IN,SEL_SUBJ,SEL_CRSE,SEL_TITLE,BEGIN_HH,BEGIN_MI,BEGIN_AP,SEL_DAY,SEL_PTRM,END_HH,END_MI,END_AP,SEL_CAMP,SEL_SCHD,SEL_SESS,SEL_INSTR,SEL_ATTR,SEL_LEVL,SEL_INSM

DAD name: bpr1
PROCEDURE  : bwzkfcls.P_GetCrse
URL        : http://secure.monroecc.edu:63500/pls/bpr1/bwzkfcls.P_GetCrse
PARAMETERS :
===========

这是正在发送的请求的图像。(使用 Chrome 浏览)

镀铬视图

我知道该网站使用 oracle PLSQL,但这似乎并不能帮助我检索搜索结果。

4

3 回答 3

0

我使用以下代码发布了表单:

private void Run(string[] args)
        {
            NameValueCollection vals = new NameValueCollection();
            vals.Add("TERM_IN", "");
            vals.Add("SEL_SUBJ", "");
            vals.Add("SEL_CRSE", "");
            vals.Add("SEL_TITLE", "");
            vals.Add("BEGIN_HH", "");
            vals.Add("BEGIN_MI", "");
            vals.Add("BEGIN_AP", "");
            vals.Add("SEL_DAY", "");
            vals.Add("SEL_PTRM", "");
            vals.Add("END_HH", "");
            vals.Add("END_MI", "");
            vals.Add("END_AP", "");
            vals.Add("SEL_CAMP", "");
            vals.Add("SEL_SCHD", "");
            vals.Add("SEL_SESS", "");
            vals.Add("SEL_INSTR", "");
            vals.Add("SEL_ATTR", "");
            vals.Add("SEL_LEVL", "");
            vals.Add("SEL_INSM", "");

            using (var client = new WebClient())
            {
                var buffer = client.UploadValues("https://secure.monroecc.edu/pls/bpr1/bwzkfcls.P_GetCrse", "POST", vals);
                Console.WriteLine(Encoding.UTF8.GetString(buffer, 0, buffer.Count()));
                //Console.Read();
            }
        }

它返回一个 200 状态代码和有效的 html,表明表单已正确接收。然而,由于没有一个值是正确的,因此返回的页面显示缺少必须包含的表单元素(PIDM 未找到名称:)

您收到的参数不匹配错误意味着您传入的参数不是存储过程期望的参数。您需要首先获取参数和预期值的确切列表,然后您可以将它们插入,这应该可以工作。不幸的是,该页面返回 200 状态代码,因此您必须以某种方式解析是否存在错误。

于 2012-10-10T20:24:59.083 回答
0

您要求一个跟随表单的页面在实际上从未接收到使结果成为可能的表单变量时为您提供结果集。

应该传递变量vals集的变量永远不会。

VARIABLES IN FORM NOT IN PROCEDURE: 
NON-DEFAULT VARIABLES IN PROCEDURE NOT IN FORM: TERM_IN,SEL_SUBJ,SEL_CRSE,SEL_TITLE,BEGIN_HH,BEGIN_MI,BEGIN_AP,SEL_DAY,SEL_PTRM,END_HH,END_MI,END_AP,SEL_CAMP,SEL_SCHD,SEL_SESS,SEL_INSTR,SEL_ATTR,SEL_LEVL,SEL_INSM

此响应错误表示它从未收到任何列出的变量。我会在您的代码中追溯到您命名并将变量列表分配给 Collection 的位置vals。检查正确的拼写和正确的分配。

于 2012-10-04T14:46:35.210 回答
0

使用 GET 请求而不是 POST。

于 2012-09-30T01:38:50.747 回答