Example #1
0
        /// <summary>
        /// 发送视频消息
        /// </summary>
        /// <param name="host"></param>
        /// <param name="account"></param>
        /// <param name="toUserNameId"></param>
        /// <param name="mediaId"></param>
        /// <returns></returns>
        /// https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxsendvideomsg?fun=async&f=json&pass_ticket=%252FX8NCpFJfNmU%252Be%252FgE2dwRCN2D8Y8EBSKunfckAJmPfCeVD4YaubkaS2e767qiyAO
        /// https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxsendvideomsg?fun=async&f=json&lang=zh_CN&pass_ticket=KwMEOlgC57Dc1AwBwr7oaHekXX0P8fJE%252Bl0cLVocIrxdWNr%252F9URPGCAEmf%252FzfjEK
        public static HttpTaskParams GetSendVideoMsg(string host, WxAccount account, string toUserNameId, string mediaId)
        {
            string url = string.Format("{0}?fun=async&f=json&lang=zh_CN&pass_ticket={1}",
                                       WxHttpApi.GetCommonUrl(host, WxHttpApi.URL_WX_SEND_VIDEO_MSG),
                                       encoding(account.PassTicket));

            HttpTaskParams htp = HttpTaskParams.NewPost(url);

            htp.ContentType = "application/json;charset=UTF-8";

            WxSendMsgReq req = new WxSendMsgReq();

            req.BaseRequest = WxReqUtil.GetIdentifyReq(account);
            req.Scene       = 0;

            WxSendMediaMsg msg = new WxSendMediaMsg();

            msg.Type         = 43;//视频
            msg.MediaId      = mediaId;
            msg.FromUserName = account.UserName;
            msg.ToUserName   = toUserNameId;
            string msgId = TimeUtil.CurrentTimeMillis() + TextUtil.RandomNumber(4);

            msg.LocalID     = msgId;
            msg.ClientMsgId = msgId;
            msg.Content     = string.Empty;

            req.Msg = msg;

            htp.CustomStringContentBody = JsonConvert.SerializeObject(req);
            return(htp);
        }
Example #2
0
 private void callbackOnHttpTaskFillParamsPre(HttpTaskParams param)
 {
     if (HttpTaskListener != null)
     {
         HttpTaskListener.OnHttpTaskFillParamsPre(mHttpTaskParams);
     }
 }
Example #3
0
 private void callbackOnHttpTaskExecuteException(HttpTaskParams param, Exception e)
 {
     if (HttpTaskListener != null)
     {
         HttpTaskListener.OnHttpTaskExecuteException(param, e);
     }
 }
Example #4
0
        /// <summary> 创建Get请求对象 </summary>
        /// <param name="param"></param>
        /// <returns></returns>
        private static HttpWebRequest createHttpWebGetRequest(HttpTaskParams param)
        {
            if (param.getStringParams() == null)
            {
                return((HttpWebRequest)HttpWebRequest.Create(param.Url));
            }

            StringBuilder urlSb = new StringBuilder();

            urlSb.Append(param.Url);
            if (param.HasStringParams())
            {
                if (param.Url.Contains("?"))
                {
                    urlSb.Append('?');
                }

                if (param.Url.Contains("&"))
                {
                    urlSb.Append("&");
                }
            }

            urlSb.Append(GetStringByPairs(param.getStringParams(), param.IsAutoEncoding()));
            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(urlSb.ToString());

            return(request);
        }
Example #5
0
        /// <summary> 设置请求体 </summary>
        /// <param name="request"></param>
        /// <param name="param">  </param>
        public static void SetHttpWebRequestBodyContent(HttpWebRequest request, HttpTaskParams param)
        {
            if (request == null || param == null)
            {
                return;
            }

            if (param.Method == HttpTaskParams.METHOD_GET)
            {
                //nothing,get 请求没有请求体,也不允许写请求体?
            }
            else
            {
                //POST 或 其他类型,优先写自定义请求体
                if (string.IsNullOrEmpty(param.CustomStringContentBody))
                {
                    if (param.getFileParams() == null)
                    {
                        //写post请求体
                        SetHttpWebRequestStringBodyContent(request, GetStringByPairs(param.getStringParams(), param.IsAutoEncoding()));
                    }
                    else
                    {
                        //写上传请求体
                        SetHttpWebRequestUploadBodyContent(request, param);
                    }
                }
                else
                {
                    //写自定义请求体
                    SetHttpWebRequestStringBodyContent(request, param.CustomStringContentBody);
                }
            }
        }
Example #6
0
        public static byte[] ExecuteBytesResp(HttpWebRequest request, HttpTaskParams param)
        {
            HttpWebResponse resp = null;
            MemoryStream    ms   = null;

            try
            {
                SetHttpWebRequestParams(request, param);
                resp = (HttpWebResponse)request.GetResponse();
                Stream respStream = resp.GetResponseStream();
                ms = new MemoryStream();
                byte[] buffer = new byte[1024];
                int    len    = -1;
                while ((len = respStream.Read(buffer, 0, buffer.Length)) > 0)
                {
                    ms.Write(buffer, 0, len);
                }

                return(ms.ToArray());
            }
            catch (Exception e)
            {
                throw e;
            }
            finally
            {
                ms.Close();
                Close(resp);
                Abort(request);
            }
        }
Example #7
0
        /// <summary>
        /// 获取微信所有联系人
        /// </summary>
        /// <param name="wxAccount"></param>
        /// <returns></returns>
        /// https://wx2.qq.com/cgi-bin/mmwebwx-bin/webwxgetcontact
        /// ?lang=zh_CN
        /// &pass_ticket=9%252FuIrFpoM6CCrYsAV7mzDF0aFkHiXGlotDlmHbQokhM%253D
        /// &r=1501480039623
        /// &seq=0
        /// &skey=@crypt_77e833b9_e705acd2a3250d78bdbb1137d87afad5
        public static HttpTaskParams GetContactAllParams(string host, WxAccount wxAccount)
        {
            string url = string.Format("{0}?lang=zh_CN&pass_ticket={1}&r={2}&seq=0&skey={3}",
                                       WxHttpApi.GetCommonUrl(host, WxHttpApi.URL_WX_CONTACT_ALL),
                                       encoding(wxAccount.PassTicket),
                                       TimeUtil.CurrentTimeMillis(),
                                       encoding(wxAccount.Skey));

            return(HttpTaskParams.NewGet(url));
        }
Example #8
0
 /// <summary> 设置所有请求参数 </summary>
 /// <param name="request"></param>
 /// <param name="param">  </param>
 public static void SetHttpWebRequestParams(HttpWebRequest request, HttpTaskParams param)
 {
     //ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(ValidateServerCertificate);
     //ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;
     request.Timeout = 30 * 1000;
     request.Proxy   = null;
     //Debug.WriteLine("****** time out = "+request.Timeout+", proxy="+request.Proxy+ ", limit=" + ServicePointManager.DefaultConnectionLimit);
     SetHttpWebRequestHeaders(request, param);
     SetHttpWebRequestBodyContent(request, param);
 }
Example #9
0
        /// <summary>
        /// 获取登录跳转链接
        /// </summary>
        /// <param name="redirectUri"></param>
        /// <returns></returns>
        /// url->https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxnewloginpage
        /// ?ticket=AV0lBiU3dZOD5hBV9bpyx9b9@qrticket_0
        /// &uuid=4dUx4jLLIA==
        /// &lang=zh_CN
        /// &scan=1499308941";
        public static HttpTaskParams GetLoginRedirectUriParams(string redirectUri)
        {
            string url = string.Format("{0}&fun={1}&version={2}&lang={3}", redirectUri, "new", "v2", "zh_CN");

            if (WxHttpApi.IsHttpScheme())
            {
                url = Regex.Replace(url, WxHttpApi.URL_SCHEME_HTTPS, WxHttpApi.URL_SCHEME_HTTP);
            }

            return(HttpTaskParams.NewGet(url));
        }
Example #10
0
        /// <summary>
        /// 获取登录uid相关请求参数
        /// </summary>
        /// <returns></returns>
        /// url->https://login.wx.qq.com/jslogin
        /// ?appid=wx782c26e4c19acffb
        /// &redirect_uri=https%3A%2F%2Fwx.qq.com%2Fcgi-bin%2Fmmwebwx-bin%2Fwebwxnewloginpage
        /// &fun=new
        /// &lang=zh_CN
        /// &_=1499308667244
        public static HttpTaskParams GetLoginUidParams()
        {
            HttpTaskParams htp = HttpTaskParams.NewGet(WxHttpApi.GetLoginUrl(WxHttpApi.URL_LOGIN_UID));

            htp.AddStringParam("appid", "wx782c26e4c19acffb");
            htp.AddStringParam("fun", "new");
            htp.AddStringParam("lang", "zh_CN");
            htp.AddStringParam("_", TimeUtil.CurrentTimeMillis().ToString());
            htp.AddStringParam("redirect_uri", WxHttpApi.URL_WX_JS_LOGIN_REDIRECT_URI);
            return(htp);
        }
Example #11
0
        /// <summary> 创建HttpWebRequest请求对象 </summary>
        /// <param name="param"></param>
        /// <returns></returns>
        public static HttpWebRequest CreateHttpWebRequest(HttpTaskParams param)
        {
            switch (param.Method)
            {
            case HttpTaskParams.METHOD_POST:
                return(createHttpWebPostRequest(param));

            default:
                return(createHttpWebGetRequest(param));
            }
        }
Example #12
0
        /// <summary>
        /// 登出
        /// </summary>
        /// <returns></returns>
        /// https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxlogout?redirect=1&type=1&skey=%40crypt_55085584_86ecfa5dcc8c6c64484e0014d33882de
        public static HttpTaskParams GetLogout(string host, string skey, string uin, string sid)
        {
            string url = string.Format("{0}?redirect={1}type={2}&skey={3}&uin={4}&sid={5}",
                                       WxHttpApi.GetCommonUrl(host, WxHttpApi.URL_WX_LOGOUT),
                                       "1",
                                       "1",
                                       encoding(skey),
                                       encoding(uin),
                                       encoding(sid));

            return(HttpTaskParams.NewPost(url));
        }
Example #13
0
        /// <summary>
        /// 获取二维码扫描结果请求
        /// </summary>
        /// <param name="uid"></param>
        /// <param name="tip"></param>
        /// <returns></returns>
        /// url->https://login.wx.qq.com/cgi-bin/mmwebwx-bin/login
        /// ?loginicon=true
        /// &uuid=Ifv-J92fbw==
        /// &tip=0&
        /// r=-366287686&
        /// _=1499309823465
        public static HttpTaskParams GetLoginScanParams(string uid, string tip)
        {
            HttpTaskParams htp = HttpTaskParams.NewGet(WxHttpApi.GetLoginUrl(WxHttpApi.URL_LOGIN_QRCODE_SCAN_CHECK));

            htp.AddStringParam("uuid", uid);
            htp.AddStringParam("tip", tip);
            htp.AddStringParam("loginicon", "true");
            long millis = TimeUtil.CurrentTimeMillis();

            htp.AddStringParam("r", ((millis / 1000)).ToString());//时间戳取反
            htp.AddStringParam("_", millis.ToString());
            return(htp);
        }
Example #14
0
        /// <summary>
        /// 获取微信状态通知
        /// </summary>
        /// <param name="result"></param>
        /// <returns></returns>
        /// https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxstatusnotify
        /// ?lang=zh_CN
        /// &pass_ticket=zXbwZhRifdRRNcPjsjxyemYskxzSRQOxZF6T3HJuTpsdgPENMSMXylIlmsnrEZ5s
        public static HttpTaskParams GetStatusNotify(string host, WxAccount wxAccount)
        {
            string url = string.Format("{0}?lang={1}&pass_ticket={2}",
                                       WxHttpApi.GetCommonUrl(host, WxHttpApi.URL_WX_STATUS_NOTIFY),
                                       "zh_CN",
                                       encoding(wxAccount.PassTicket));

            HttpTaskParams htp = HttpTaskParams.NewPost(url);

            htp.ContentType             = "application/json;charset=utf-8";
            htp.CustomStringContentBody = JsonConvert.SerializeObject(WxReqUtil.GetStatusNotifyReq(wxAccount));
            return(htp);
        }
Example #15
0
        /// <summary>
        /// 获取同步检查参数
        /// </summary>
        /// <param name="account"></param>
        /// <param name="deviceId"></param>
        /// <param name="wxSyncKey"></param>
        /// <returns></returns>
        /// https://webpush.wx2.qq.com/cgi-bin/mmwebwx-bin/synccheck
        /// ?r=1501480039641
        /// &skey=%40crypt_77e833b9_e705acd2a3250d78bdbb1137d87afad5&sid=TlG7spFxhWig3TpY
        /// &uin=243082945
        /// &deviceid=e835949820036438
        /// &synckey=1_653730215%7C2_653730255%7C3_653730169%7C1000_1501462441
        /// &_=1501479916949
        public static HttpTaskParams GetSyncCheckParams(string host, WxAccount wxAccount, WxSyncKey wxSyncKey)
        {
            HttpTaskParams htp = HttpTaskParams.NewGet(WxHttpApi.GetWebPushUrl(host, WxHttpApi.URL_WX_MSG_CHECK));

            htp.AddStringParam("skey", wxAccount.Skey);
            htp.AddStringParam("uin", wxAccount.Uin);
            htp.AddStringParam("sid", wxAccount.Sid);
            htp.AddStringParam("deviceid", wxAccount.DeviceId);
            htp.AddStringParam("synckey", WxReqUtil.GetSyncKey2String(wxSyncKey));
            long millis = TimeUtil.CurrentTimeMillis();

            htp.AddStringParam("r", millis.ToString());
            htp.AddStringParam("_", (millis / 1000).ToString());//时间戳取反
            return(htp);
        }
Example #16
0
 /// <summary> 同步创建网络任务 </summary>
 /// <param name="param"></param>
 /// <returns></returns>
 private HttpTask syncCreateHttpTask(HttpTaskParams param)
 {
     lock (mLockObj)
     {
         if (mTaskThread == null)
         {
             return(null);
         }
         else
         {
             mCurrentHttpTask = new HttpTask(param);
             mCurrentHttpTask.SetCustomCookieContainer(mCookieContainer);
             return(mCurrentHttpTask);
         }
     }
 }
Example #17
0
        /// <summary>
        /// 获取微信登录初始化接口
        /// </summary>
        /// <param name="result"></param>
        /// <returns></returns>
        /// demo:https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxinit
        /// ?r=665841145
        /// &lang=zh_CN
        /// &pass_ticket=zXbwZhRifdRRNcPjsjxyemYskxzSRQOxZF6T3HJuTpsdgPENMSMXylIlmsnrEZ5s
        public static HttpTaskParams GetLoginInitParams(string host, WxLoginIdsResult result, string deviceId)
        {
            //r时间戳取反
            string url = string.Format("{0}?r={1}&lang={2}&pass_ticket={3}",
                                       WxHttpApi.GetCommonUrl(host, WxHttpApi.URL_WX_INIT),
                                       (TimeUtil.CurrentTimeMillis() / 1000),
                                       "zh_CN",
                                       encoding(result.PassTicket));

            HttpTaskParams htp = HttpTaskParams.NewPost(url);

            htp.ContentType             = "application/json;charset=utf-8";
            htp.CustomStringContentBody = JsonConvert.SerializeObject(WxReqUtil.GetBaseReq(result, deviceId));
#if Debug
            Console.WriteLine("init content body = " + htp.CustomStringContentBody);
#endif
            return(htp);
        }
Example #18
0
        /// <summary>
        /// 群踢人
        /// </summary>
        /// <param name="account"></param>
        /// <param name="userNameId"></param>
        /// <param name="groupUserNameId"></param>
        /// <returns></returns>
        public static HttpTaskParams GetGroupContactDelMember(string host, WxAccount account, string userNameId, string groupUserNameId)
        {
            string url = string.Format("{0}?fun=delmember&lang=zh_CN&pass_ticket={1}",
                                       WxHttpApi.GetCommonUrl(host, WxHttpApi.URL_WX_GROUP_DEL_MEMBER),
                                       encoding(account.PassTicket));

            HttpTaskParams htp = HttpTaskParams.NewPost(url);

            htp.ContentType = "application/json;charset=UTF-8";

            WxGroupMemberReq req = new WxGroupMemberReq();

            req.BaseRequest             = WxReqUtil.GetIdentifyReq(account);
            req.DelMemberList           = userNameId;
            req.ChatRoomName            = groupUserNameId;
            htp.CustomStringContentBody = JsonConvert.SerializeObject(req);
            return(htp);
        }
Example #19
0
        /// <summary>
        /// 批量获取联系人,包含个人和组
        /// </summary>
        /// <param name="wxAccount"></param>
        /// <param name="groupUserNames"></param>
        /// <returns></returns>
        /// //https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxbatchgetcontact
        /// ?type=ex
        /// &r=1498291861743
        /// &lang=zh_CN
        /// &pass_ticket=ga8bxGb9YQJLWhU6RA6FMamJy0wqnD7QuWP9k%252F9tlTb8O1uUkgcZ7YbjNg3bEkYH
        public static HttpTaskParams GetBatchContactParams(string host, WxAccount wxAccount, List <string> groupUserNameIds)
        {
            string url = string.Format("{0}?type=ex&r={1}&lang=zh_CN&pass_ticket={2}",
                                       WxHttpApi.GetCommonUrl(host, WxHttpApi.URL_WX_CONTACT_BATCH),
                                       TimeUtil.CurrentTimeMillis(),
                                       encoding(wxAccount.PassTicket));

            HttpTaskParams htp = HttpTaskParams.NewPost(url);

            htp.ContentType = "application/json;charset=utf-8";

            WxBatchContactReq req = new WxBatchContactReq();

            req.BaseRequest             = WxReqUtil.GetIdentifyReq(wxAccount);
            req.Count                   = CollectionUtil.Size(groupUserNameIds);
            req.List                    = WxReqUtil.GetBatchContactItemList(groupUserNameIds);
            htp.CustomStringContentBody = JsonConvert.SerializeObject(req);
            return(htp);
        }
Example #20
0
        public static HttpTaskParams GetUploadImage(string host, WxAccount account, string toUserNameId, string imagePath)
        {
            string url = string.Format("{0}?f=json", WxHttpApi.GetFileUploadUrl(host, WxHttpApi.URL_WX_FILE_UPLOAD));

            HttpTaskParams htp  = HttpTaskParams.NewPost(url);
            FileInfo       info = new FileInfo(imagePath);

            htp.AddStringParam("id", "WU_FILE_" + fileCount);
            htp.AddStringParam("name", info.Name);
            htp.AddStringParam("type", "image/jpeg");
            htp.AddStringParam("lastModifiedDate", info.LastWriteTime.ToString("r", DateTimeFormatInfo.InvariantInfo));
            htp.AddStringParam("size", info.Length.ToString());
            htp.AddStringParam("mediatype", "pic");
            htp.AddStringParam("webwx_data_ticket", account.DataTicket);
            htp.AddStringParam("pass_ticket", account.PassTicket);
            htp.AddFileParam("filename", imagePath, WxReqUtil.GetImageMimeType(info));
            htp.AddStringParam("uploadmediarequest", WxReqUtil.GetUploadMediaRequestBody(account, toUserNameId, info, imagePath));
            return(htp);
        }
Example #21
0
        //private static bool ValidateServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
        //{
        //    Debug.WriteLine("accept name = "+ certificate.GetName());
        //    return true;
        //}

        /// <summary> 设置请求头相关信息 </summary>
        /// <param name="request"></param>
        /// <param name="param">  </param>
        public static void SetHttpWebRequestHeaders(HttpWebRequest request, HttpTaskParams param)
        {
            if (request == null || param == null)
            {
                return;
            }

            request.Method = ConvertHttpWebRequestMethodString(param.Method);
            request.Headers.Add("Charset", "UTF-8");
            if (string.IsNullOrEmpty(param.ContentType))
            {
                if (!param.HasFileParams() && param.Method == HttpTaskParams.METHOD_POST)
                {
                    request.ContentType = "application/x-www-form-urlencoded";
                }
            }
            else
            {
                request.ContentType = param.ContentType;
            }
        }
Example #22
0
        /// <summary>
        /// 同步获取更新消息
        /// </summary>
        /// <param name="account"></param>
        /// <param name="syncKey"></param>
        /// <returns></returns>
        /// https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxsync
        /// ?sid=XbUcBWzGt6NPu5jO
        /// &skey=@crypt_55085584_cf738edf865a9c101021022d1c732ae6
        /// &lang=zh_CN
        /// &pass_ticket=lBIvUtbeb5e%252BMIDHLr5QVehuJDPbW3NEgMSh87ILAOv3ue1HdLtSV%252B8AK0ULznEL
        public static HttpTaskParams GetSyncMsgParams(string host, WxAccount account, WxSyncKey syncKey)
        {
            string url = string.Format("{0}?sid={1}&skey={2}&pass_ticket={3}&lang={4}",
                                       WxHttpApi.GetCommonUrl(host, WxHttpApi.URL_WX_MSG_PULL),
                                       encoding(account.Sid),
                                       encoding(account.Skey),
                                       encoding(account.PassTicket),
                                       "zh_CN");

            HttpTaskParams htp = HttpTaskParams.NewPost(url);

            htp.ContentType = "application/json;charset=UTF-8";

            WxWebSyncReq req = new WxWebSyncReq();

            req.BaseRequest             = WxReqUtil.GetIdentifyReq(account);
            req.SyncKey                 = syncKey;
            req.rr                      = (~(TimeUtil.CurrentTimeMillis() / 1000)).ToString();//时间戳取反
            htp.CustomStringContentBody = JsonConvert.SerializeObject(req);
            return(htp);
        }
Example #23
0
        /// <summary>
        /// 上传视频文件
        /// </summary>
        /// <param name="host"></param>
        /// <param name="account"></param>
        /// <param name="toUserNameId"></param>
        /// <param name="videoPath"></param>
        /// <returns></returns>
        /// https://file.wx.qq.com/cgi-bin/mmwebwx-bin/webwxuploadmedia?f=json
        public static HttpTaskParams GetUploadVideo(string host, WxAccount account, string toUserNameId, string videoPath)
        {
            string url = string.Format("{0}?f=json", WxHttpApi.GetFileUploadUrl(host, WxHttpApi.URL_WX_FILE_UPLOAD));

            HttpTaskParams htp  = HttpTaskParams.NewPost(url);
            FileInfo       info = new FileInfo(videoPath);

            htp.AddStringParam("id", "WU_FILE_" + fileCount);
            htp.AddStringParam("name", info.Name);
            htp.AddStringParam("type", WxReqUtil.GetVideoMimeType(info));//"video/mp4"
            htp.AddStringParam("lastModifiedDate", info.LastWriteTime.ToString("r", DateTimeFormatInfo.InvariantInfo));
            htp.AddStringParam("size", info.Length.ToString());
            htp.AddStringParam("chunks", "1"); //分段数,这里一次上传,不分段
            htp.AddStringParam("chunk", "0");  //第几段
            htp.AddStringParam("mediatype", "video");
            htp.AddStringParam("uploadmediarequest", WxReqUtil.GetUploadMediaRequestBody(account, toUserNameId, info, videoPath));
            htp.AddStringParam("webwx_data_ticket", account.DataTicket);
            htp.AddStringParam("pass_ticket", account.PassTicket);
            htp.AddFileParam("filename", videoPath);

            return(htp);
        }
Example #24
0
        public static string ExecuteStringResp(HttpWebRequest request, HttpTaskParams param)
        {
            HttpWebResponse resp         = null;
            StreamReader    streamReader = null;

            try
            {
                SetHttpWebRequestParams(request, param);
                resp = (HttpWebResponse)request.GetResponse();
                Stream responseStream = resp.GetResponseStream();
                streamReader = new StreamReader(responseStream, Encoding.UTF8);
                return(streamReader.ReadToEnd());
            }
            catch (Exception e)
            {
                throw e;
            }
            finally
            {
                streamReader.Close();
                Close(resp);
                Abort(request);
            }
        }
Example #25
0
 /// <summary> 创建Post请求对象 </summary>
 /// <param name="param"></param>
 /// <returns></returns>
 private static HttpWebRequest createHttpWebPostRequest(HttpTaskParams param)
 {
     return((HttpWebRequest)HttpWebRequest.Create(param.Url));
 }
Example #26
0
 public HttpTask(HttpTaskParams httpTaskParams)
 {
     SetHttpTaskParams(httpTaskParams);
 }
Example #27
0
 public void SetHttpTaskParams(HttpTaskParams htp)
 {
     mHttpTaskParams = htp;
 }
Example #28
0
        /// <summary> 设置上传请求体 </summary>
        /// <param name="request"></param>
        /// <param name="param">  </param>
        private static void SetHttpWebRequestUploadBodyContent(HttpWebRequest request, HttpTaskParams param)
        {
            if (request == null || param == null)
            {
                return;
            }

            // 1.构造分界线标识
            string boundary = string.Format("----{0}", DateTime.Now.Ticks.ToString("x"));       // 分界线可以自定义参数

            byte[] boundaryBytes = Encoding.UTF8.GetBytes(string.Format("\r\n--{0}\r\n", boundary));

            //2.上传header属性设置
            request.Method      = "POST";
            request.ContentType = string.Format("multipart/form-data; boundary={0}", boundary);

            byte[] bytes  = null;
            Stream stream = request.GetRequestStream();

            //4.写 key value 数据
            List <NameValuePair> pairs = param == null ? null : param.getStringParams();

            if (pairs != null && pairs.Count > 0)
            {
                string        pairStr;
                NameValuePair pair;
                for (int i = 0; i < pairs.Count; i++)
                {
                    //写分割线
                    stream.Write(boundaryBytes, 0, boundaryBytes.Length);

                    //写key value
                    pair    = pairs[i];
                    pairStr = string.Format("Content-Disposition: form-data; name=\"{0}\"\r\n\r\n{1}", pair.Name, pair.Value);
                    bytes   = Encoding.UTF8.GetBytes(pairStr);
                    stream.Write(bytes, 0, bytes.Length);
                }
            }

            //5.写上传文件数据
            List <NameFilePair> filePairs = param == null ? null : param.getFileParams();

            if (filePairs != null && filePairs.Count > 0)
            {
                NameFilePair filePair;
                string       pairStr;
                string       fileName;
                string       contentType;

                byte[] buffer    = new byte[1024 * 100];
                int    bytesRead = 0;

                for (int i = 0; i < filePairs.Count; i++)
                {
                    //写分割线
                    stream.Write(boundaryBytes, 0, boundaryBytes.Length);

                    //写文件属性
                    filePair    = filePairs[i];
                    fileName    = string.IsNullOrEmpty(filePair.FileName) ? new FileInfo(filePair.FilePath).Name : filePair.FileName;
                    contentType = string.IsNullOrEmpty(filePair.ContentType) ? "application/octet-stream" : filePair.ContentType;
                    pairStr     = string.Format("Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"\r\nContent-Type: {2}\r\n\r\n", filePair.Name, fileName, contentType);
                    bytes       = Encoding.UTF8.GetBytes(pairStr);
                    stream.Write(bytes, 0, bytes.Length);

                    //写文件数据
                    using (FileStream fileStream = new FileStream(filePair.FilePath, FileMode.Open, FileAccess.Read))
                    {
                        while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0)
                        {
                            stream.Write(buffer, 0, bytesRead);
                        }
                    }
                }
            }

            // 6.写结束分界线
            bytes = Encoding.UTF8.GetBytes(string.Format("\r\n--{0}--\r\n", boundary));
            stream.Write(bytes, 0, bytes.Length);

            //7.关闭请求流
            stream.Close();
        }
Example #29
0
        /// <summary>
        /// 获取二维码图片请求
        /// </summary>
        /// <param name="uid"></param>
        /// <returns></returns>
        /// url->https://login.weixin.qq.com/qrcode/Ifv-J92fbw==
        public static HttpTaskParams GetLoginQrCodeParams(string uid)
        {
            string url = string.Format("{0}/{1}", WxHttpApi.GetLoginUrl(WxHttpApi.URL_LOGIN_QRCODE), uid);//uid不能encoding

            return(HttpTaskParams.NewGet(url));
        }
Example #30
0
 public static HttpWebResponse ExecuteResp(HttpWebRequest request, HttpTaskParams param)
 {
     SetHttpWebRequestParams(request, param);
     return((HttpWebResponse)request.GetResponse());
 }