/// <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); }
private void callbackOnHttpTaskFillParamsPre(HttpTaskParams param) { if (HttpTaskListener != null) { HttpTaskListener.OnHttpTaskFillParamsPre(mHttpTaskParams); } }
private void callbackOnHttpTaskExecuteException(HttpTaskParams param, Exception e) { if (HttpTaskListener != null) { HttpTaskListener.OnHttpTaskExecuteException(param, e); } }
/// <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); }
/// <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); } } }
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); } }
/// <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)); }
/// <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); }
/// <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)); }
/// <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); }
/// <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)); } }
/// <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)); }
/// <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); }
/// <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); }
/// <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); }
/// <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); } } }
/// <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); }
/// <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); }
/// <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); }
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); }
//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; } }
/// <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); }
/// <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); }
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); } }
/// <summary> 创建Post请求对象 </summary> /// <param name="param"></param> /// <returns></returns> private static HttpWebRequest createHttpWebPostRequest(HttpTaskParams param) { return((HttpWebRequest)HttpWebRequest.Create(param.Url)); }
public HttpTask(HttpTaskParams httpTaskParams) { SetHttpTaskParams(httpTaskParams); }
public void SetHttpTaskParams(HttpTaskParams htp) { mHttpTaskParams = htp; }
/// <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(); }
/// <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)); }
public static HttpWebResponse ExecuteResp(HttpWebRequest request, HttpTaskParams param) { SetHttpWebRequestParams(request, param); return((HttpWebResponse)request.GetResponse()); }