liu122613153B 2013-08-23 02:33 采纳率: 0%
浏览 4849

发送http请求返回{"retcode":103,"errmsg":""}

我模仿一个QQ登录的按钮功能 为什么返回的{"retcode":103,"errmsg":""}
代码如下:

            try
            { 
            //发送请求地址
            string url2 = ptsig;

            string strHtmlContent2 = "";//接收返回数据
            HttpWebRequest webRequest2 = WebRequest.Create(url2) as HttpWebRequest;//发送请求

            webRequest2.Method = "GET";//请求方法
            webRequest2.Referer = "http://d.web2.qq.com/proxy.html";//页面链接

            webRequest2.ContentType = "application/x-www-form-urlencoded";//内容类型
            //webRequest2.Timeout = 2000;//响应时间
            webRequest2.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.1.4322)";//客户端浏览器的原始用户代理信息

            webRequest2.CookieContainer = cookies;//获取cookie


            HttpWebResponse response2 = (HttpWebResponse)webRequest2.GetResponse();//获得服务器响应对象 
            Stream resStream2 = response2.GetResponseStream();//转成流对象  
            StreamReader sr2 = new StreamReader(resStream2, Encoding.UTF8);//创建只读流对象
            strHtmlContent2 = sr2.ReadToEnd();
            response2.Close();//关闭流对象
            webRequest2.Abort();//关闭请求
        }
        catch (Exception e)
        {
            Msg = "qq:" + _qqno + "登陆" + e.Message;
            return false;

        }

        try
        {
            //发送请求地址
            string url2 = "http://d.web2.qq.com/channel/login2";

            string strHtmlContent2 = "";//接收返回数据
            HttpWebRequest webRequest2 = WebRequest.Create(url2) as HttpWebRequest;//发送请求

            webRequest2.Method = "POST";//请求方法

            //webRequest2.Referer = "http://d.web2.qq.com/proxy.html";//页面链接
            webRequest2.Referer = "http://d.web2.qq.com/proxy.html?v=20110331002&callback=1&id=2";

            webRequest2.ContentType = "application/x-www-form-urlencoded";//内容类型
            //webRequest2.Timeout = 2000;//响应时间
            webRequest2.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.1.4322)";//客户端浏览器的原始用户代理信息

            webRequest2.CookieContainer = cookies;//获取cookie

            //上传数据
            string postData = "r={\"status\":\"online\",\"ptwebqq\":\"" + ptwebqq + "\",\"passwd_sig\":\"\",\"clientid\":\"" + clientid + "\",\"psessionid\":null}";

            // Encode the data
            byte[] encodedBytes = Encoding.UTF8.GetBytes(postData);//转成二进制数组
            webRequest2.ContentLength = encodedBytes.Length;//字节数

            // Write encoded data into request stream
            Stream requestStream = webRequest2.GetRequestStream();//转成流对象
            requestStream.Write(encodedBytes, 0, encodedBytes.Length);
            requestStream.Close();//关闭流并释放资源

            HttpWebResponse response2 = (HttpWebResponse)webRequest2.GetResponse();//获得服务器响应对象 
            Stream resStream2 = response2.GetResponseStream();//转成流对象  
            StreamReader sr2 = new StreamReader(resStream2, Encoding.UTF8);//创建只读流对象
            strHtmlContent2 = sr2.ReadToEnd();
            response2.Close();//关闭流
            webRequest2.Abort();//关闭请求
            if (strHtmlContent2.IndexOf("vfwebqq") > -1)
            {
                //获取第二次登录用户进行QQ号的操作
                vfwebqq = new Regex("vfwebqq\":\"[^\"]+").Match(strHtmlContent2).Value.Replace("vfwebqq\":\"", "");
                psessionid = new Regex("psessionid\":\"[^\"]+").Match(strHtmlContent2).Value.Replace("psessionid\":\"", "");
                Msg = "qq:" + _qqno + "登陆webqq成功";
                return true;
            }
            else
            {
                Msg = "qq:" + _qqno + "登陆受限";
                return false;
            }
        }
        catch (Exception e)
        {
            Msg = "qq:" + _qqno + "登陆" + e.Message;
            return false;

        }
  • 写回答

1条回答 默认 最新

  • HaiChecker 2015-12-25 11:11
    关注

    没有把cookie带上

    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器