【问题标题】:httpwebresponse doesnt workhttpwebresponse 不起作用
【发布时间】:2011-04-24 19:19:39
【问题描述】:

我正在尝试以编程方式搜索上述网站上的项目。

关注对我不起作用。响应实际上是一个错误页面,而不是搜索结果页面。

请帮忙。

        string sUrl = "http://www.arrownac.com/";
        string sUrl1 = "http://app.arrownac.com/aws/pg_webc?s=P";

        HttpWebRequest owebreq = (HttpWebRequest)WebRequest.Create(sUrl1);
        owebreq.Referer = sUrl;          

        ASCIIEncoding encoding = new ASCIIEncoding();

        string postdata = "search_token=" + "743C083102JPTR";
        byte[] data = encoding.GetBytes(postdata);

        owebreq.ContentType = "text/html";
            //"application/x-www-form-urlencoded";

        owebreq.Method = "POST";
        owebreq.ContentLength = data.Length;
        Stream newStream = owebreq.GetRequestStream();
        newStream.Write(data, 0, data.Length);
        newStream.Close();        

        HttpWebResponse owebresp = (HttpWebResponse)owebreq.GetResponse();
        string sResult = string.Empty;
        using (StreamReader sr = new StreamReader(owebresp.GetResponseStream()))
        {
            sResult = sr.ReadToEnd();
            sr.Close();
        }

【问题讨论】:

  • 嗯,什么不起作用?你调试过吗?你得到错误,如果有什么错误(如果页面是什么代码)?多说一些关于您的问题的信息,否则您将得不到好的答案!
  • 没有代码错误,执行正常。但是我得到的响应输出为 Arrow Electronics : Error Occured 如果我转到arrownac.com 并输入部分并搜索 POST 操作映射到app.arrownac.com/aws/pg_webc?s=P,则手动手动获取结果。 743C083102JPTR 是一个示例部件,可以通过它进行搜索以查看结果。

标签: httpwebrequest httpwebresponse


【解决方案1】:

既然代码很简单,为什么还要写这么多代码:

class Program
{
    static void Main()
    {
        using (var client = new WebClient())
        {
            var referer = "http://www.arrownac.com/";
            client.Headers[HttpRequestHeader.Referer] = referer;                
            var valuesToPost = new NameValueCollection
            {
                { "search_token", "743C083102JPTR" },
            };
            var url = "http://app.arrownac.com/aws/pg_webc?s=P";
            var result = client.UploadValues(url, valuesToPost);
            var resultString = Encoding.Default.GetString(result);
            Console.WriteLine(resultString);
        }
    }
}

【讨论】:

  • 很抱歉,结果和我的代码一样;看起来目标站点没有从外部程序中获取 POST,不确定如何覆盖。
【解决方案2】:

您可能没有像网站预期的那样完全发送请求。我会做以下事情:

1)使用火狐。 2)安装萤火虫插件 3)使用Firefox来执行你的场景。 4)查看从firefox发送的实际请求(使用firebug插件) 5) 现在,将完全相同的请求复制到代码中的用户代理、cookie 和请求标头。 6)利润?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-28
    • 2012-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多