實戰
一:調用小程序接口獲取二維碼
/// <summary> /// 獲取小程序二維碼 /// </summary> /// <param name="param">二維碼scene參數</param> /// <param name="width">二維碼寬度</param> /// <returns></returns> public HttpResponseMessage QueryAppletQrCode(string param, int width) { HttpResponseMessage result = new HttpResponseMessage(System.Net.HttpStatusCode.OK); if (param.IsEmpty()) { return result; } //獲取小程序accesstoken var token= "";//方法省略 string jsonparam = ""; if (width > 0) { var data = new { scene = param, page = "pages/login/wxlogin", width = width }; jsonparam = data.ToJson(); } else { var data = new { scene = param, page = "pages/login/wxlogin" }; jsonparam = data.ToJson(); } var postdata = new StringContent(jsonparam); postdata.Headers.Clear(); postdata.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json"); HttpClient httpClient = new HttpClient() { BaseAddress= new Uri("https://api.weixin.qq.com/") }; var response=httpClient.PostAsync($"wxa/getwxacodeunlimit?access_token={token}",postdata).Result; return response; }
二:方法調用
MVC。這種方法 小程序image的src等於返回值即可
微信返回的是二進制內容,直接以二進制的方式讀取即可。
/// <summary> /// 獲取小程序圖片 /// </summary> /// <param name="param"></param> /// <param name="width">寬度</param> /// <returns></returns> [HttpGet] public FileResult QueryAppletQrCode(string param, int width = 0) { var response = _orgBusiness.QueryAppletQrCode(param, width); var contentType = response.Content.Headers.ContentType?.ToString(); //二維碼錯誤 if (!string.IsNullOrWhiteSpace(contentType) && contentType.Contains("json")) { var data = response.Content.ReadAsByteArrayAsync().Result; string path = Server.MapPath("/AppletImages/images/nore.png"); return File(path, @"image/PNG"); } else { var data = response.Content.ReadAsByteArrayAsync().Result; return File(data, @"image/JPEG"); } }
WebApi方式返回
注意把圖片轉成base64返回,不然小程序端獲取有問題
/// <summary> /// 獲取小程序圖片 /// </summary> /// <param name="param">企業id</param> /// <param name="width">寬度</param> /// <returns></returns> [HttpGet] public HttpResponseMessage QueryAppletQrCode(string param, int width = 0) { var response = QueryAppletQrCode(param, width); var data = response.Content.ReadAsByteArrayAsync().Result; HttpResponseMessage returndata = new HttpResponseMessage(System.Net.HttpStatusCode.OK); returndata.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue (@"image/JPEG"); string strbaser64 = System.Convert.ToBase64String(data); returndata.Content =new StringContent(strbaser64); return returndata; }
小程序端base64顯示