日本的天皇和首相


日本的天皇和首相一江货轮闹霓虹
日本的天皇和首相客户是个兵哥哥,  和我聊天夸我长得漂亮。  下一句就说在部队女生少,  连看到母猪都觉得眉清目秀!  我了个去!夸人损人呢!日本的天皇和首相要吃吗?日本的天皇和首相坐在夕阳下的我
日本的天皇和首相上大学时,我寝室里有个舍友经常打呼噜。  有一天早上,他问:“昨晚我没打呼噜吧?”  另一个舍友回答:“你有没有打呼噜我不知道,但是昨晚声控灯一直在闪,今早估计累坏了!”日本的天皇和首相不容玩弄
日本的天皇和首相今天接到一骗子短信,  让我速把钱汇入农行一账号。  半小时后我顺手回了一条:“已存5000,请查收。”  后来收到回复:“都跑银行三趟了,  还没收到你的钱,你这个骗子!”日本的天皇和首相已经证明了爱情真实的存在
日本的天皇和首相金贵的麦香
日本的天皇和首相忠肝义胆凌云志,一日招安却枉然。
日本的天皇和首相今天公司新来一同事。我问他老家哪里的,这哥们来一句首字母是H.哥这暴脾气,上学那会就只学会了地理。湖南,不是,湖北,不是。河南,不是,河北,不是,黑龙江,也不是。我是福建的嘛!日本的天皇和首相易飞的病情痊愈,那就意味着他和高进的融为一体,当然接受了高进的记忆。日本的天皇和首相

    当前userid:22136186

    当前username:

    到了军区将周琦他们刚押下车,远处就跑来了一名上校军官看着周琦道:周少,你怎么也被抓来这里了!赵名扬看着这名上校觉得有点眼熟,但就是想不起他是谁,疑惑的问道:你是谁啊?你认识周琦吗?报告首长,我叫于强!就是您第一次来时带您去靶场的那人。

皇冠足球比分

大发论坛时时彩平台尊龙娱乐是黑网吗海天国际娱乐城注册送钱凯发娱乐乐宝娱乐城真人赌钱bodog888亚美国际娱乐城 金龙国际 www.am8.com 亚洲城娱乐 老k国际娱乐城 666k8.com 金威国际娱乐城 名人国际娱乐城 ag娱乐平台 V博娱乐城 博狗娱乐好玩吗,信誉好吗网站地图凯时娱乐注册送钱e8889.com网站地图大发888新址网站地图花旗国际网站地图博彩四肖网站地图ag平台代理网站地图大发888游戏平台注册送钱e8889.com网站地图网上购彩什么时候恢复网站地图乐橙tp1网站地图尊龙国际注册送钱e8889.com网站地图最新送白菜娱乐城网站地图网上真人赌博能赢钱吗网站地图足球开户hg0088网站地图线上娱乐去澳门网站地图http://tinyurl.com/odgfc7e网站地图尊龙娱乐网站地图诈金花 德州扑克网站地图申搏官网网站地图大发888中期网站地图京城娱乐城网站地图

Fork me on GitHub

代码改变世界

抓取登录后的数据

2015-11-29 23:01 by stoneniqiu, ... 阅读, ... 评论, 收藏, 编辑

    这次是应一个客户需要,抓取另外一个网站的数据,包括数据提交。这些操作需要在登录之后完成。技术上没有什么难点。关键都是用fiddler找到参数和url。

记住登录状态

    HttpClient能够记住登录状态的,登录完了可以讲Httpclient保存起来。

 private HttpClient _client;
        public HttpClient HttpClient
        {
            get
            {
                if (_client == null)
                {
                    if (Session["Client"]!= null)
                    {
                        _client = Session["Client"] as HttpClient;
                    }
                    else
                    {
                        var handler = new HttpClientHandler
                        {
                            AutomaticDecompression = DecompressionMethods.GZip,
                            UseCookies = true,
                            Proxy =
                                new WebProxy("http://ip:8080/", true, null,
                                    new NetworkCredential("username", "pwd", "domain"))
                        };//代理 
                        _client = new HttpClient(handler);
                        _client.DefaultRequestHeaders.Add("user-agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36");
                        ClientLogin(new ClientLogoModel());
                        Session["Client"] = _client;
                    }
                  
                }

                return _client;
            }
        }

 因为目标网站都是用的json传的参数。也是用json返回的参数。不是form提交的格式。所以post之前也要将参数转成json。

 public object ClientLogin(ClientLogoModel logoModel)
        {
            if (logoModel == null)
            {
                logoModel=new ClientLogoModel();

            }
            var data = JsonConvert.SerializeObject(logoModel); ;
            var logoParams = new List<KeyValuePair<string, string>>();
            logoParams.Add(new KeyValuePair<string, string>("data", data));
            var response = _client.PostAsync(new Uri(LogonUrl), new FormUrlEncodedContent(logoParams)).Result;
            var result = response.Content.ReadAsStringAsync().Result;
            return result;
        }

返回数据转化

从Fiddler左边获得Url,右边TextView上方是参数格式,下方是返回的数据格式。 

每次都要转换,写成泛型。

    public T GetTList<T>(object obj, string url)
        {
            var data = JsonConvert.SerializeObject(obj); ;
            var paramList = new List<KeyValuePair<String, String>> { new KeyValuePair<string, string>("data", data) };
            var response = HttpClient.PostAsync(new Uri(url), new FormUrlEncodedContent(paramList)).Result;

            var result = response.Content.ReadAsStringAsync().Result;
            return JsonConvert.DeserializeObject<T>(result);
        }

调用:

    public ActionResult TradePage(TradeQueryParm param)
        {
       var data = GetTList<TradeRequstResult>(obj, tradeListUrl);
            return PartialView(data);
        }

 前端再将参数传递过来。

  .post("/Trade/TradePage", {
                    agentName: agentName, shortName: shortName,
                    startDate: startDate, endDate: endDate, page: cpage
                }, function (data) {
                    ("#mtable").html(data);
  }
HttpClient 上传图片:
   private string UploadImage(string fileName,string path)
        {
            FileStream aFile = new FileStream(path, FileMode.Open);
            MultipartFormDataContent form = new MultipartFormDataContent();
            var  content = new StreamContent(aFile);
            content.Headers.ContentType = new MediaTypeHeaderValue("image/jpeg");
            content.Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data")
            {
                Name = "protocolFile",
                FileName = fileName
            };
            form.Add(content);
            var response = HttpClient.PostAsync(imgLoadUrl, form).Result;
            return response.Content.ReadAsStringAsync().Result;
        }