比如要查询在上海的交通违章(http://www.shjtaq.com/Server3/dzjc_new.asp),我想把车牌号、发动机号在页面跳转后直接显示,我只要输入验证码,点击提交按钮就能查询了

解决方案 »

  1.   

    HttpWebRequest 添加参数咯。 不过你要图片分析获取验证码, 而且要保留cookie
      

  2.   

        如果你只是要一个查询结果,建议你直接把数据post过去对方网站,再获取返回值。也就是查询的结果。这样会更好。
        如果没有验证码,直接用HttpWebRequest发送post请求过去就行了。
        有验证码就麻烦一些,因为验证码的字符串应该是用session记录的,而HttpWebRequest发送请求在不指定sessionid的情况下每次请求产生的sessionid都会不同,被认为是不同的请求。所以在使用HttpWebRequest时需要指定sessionid,把对方网站的验证码页面请求过来,查看过那个页面源码,验证码的链接是http://www.shjtaq.com/Server3/validatecode.asp?m=83303.77,让自己网站的使用者把查询需要的数据,以及验证码填好再把数据用HttpWebRequest发送post请求指定同样的sessionid发送到对放服务器进行查询,最后分析返回数据的获得自己需要的结果。
       如果对sessionid不了解建议先去了解一下。
      

  3.   

    再附一个方法吧,sessionid指定是以cookies的形式包含在CookieCollection Cookie对象中
    #region 获取html数据流
            /// <summary>
            /// 
            /// </summary>
            /// <param name="url">请求的url</param>
            /// <param name="RefererUrl">发起请求的页面</param>
            /// <param name="Method">请求的方法post/get</param>
            /// <param name="Cookie">请求时附带的cookies</param>
            /// <param name="PostStr">post过去的信息</param>
            /// <param name="GetRedirect">是否获取重定向后的内容</param>
            /// <param name="response">回传response参数</param>
            public static void Get_Response(string url, string RefererUrl, string Method, ref CookieCollection Cookie, string PostStr, bool GetRedirect, ref HttpWebResponse response)
            {
                HttpWebRequest request = null;
                try
                {
                    //myjob需要
                    System.Net.ServicePointManager.Expect100Continue = false;
                    //myjob需要
                    request = (HttpWebRequest)WebRequest.Create(url);
                    request.UserAgent = UserAgent;
                    request.Timeout = 20000;
                    request.AllowAutoRedirect = GetRedirect;
                    request.Method = Method;
                    if (RefererUrl != "")
                    {
                        request.Referer = RefererUrl;
                    }
                    if (Cookie != null)
                    {
                        request.CookieContainer = new CookieContainer();
                        request.CookieContainer.Add(Cookie);
                    }
                    if (Method == "POST")
                    {
                        request.ContentType = "application/x-www-form-urlencoded"; //作为表单请求
                        if (PostStr != "")
                        {
                            Byte[] B = System.Text.Encoding.UTF8.GetBytes(PostStr);
                            request.ContentLength = B.Length;
                            Stream SW = request.GetRequestStream(); //开始提交数据
                            SW.Write(B, 0, B.Length);
                            SW.Close();
                        }
                    }
                    response = (HttpWebResponse)request.GetResponse();
                }
                catch
                {
                }            finally
                {
                    if (request != null)
                        request = null;
                }        }
            #endregion