C#使用HttpClient如(rú)何判斷獲取小程序二維碼是否出錯 - 新聞資(zī)訊 - 雲南小程序開發|雲南軟件開發|雲南網站(zhàn)建設-西山區知普網絡科技工作室

159-8711-8523

雲南網建設/小程序開發/軟件開發

知識

不管是網站(zhàn),軟件還是小程序,都要直接或間接能為您産生價值,我們在追求其視覺表現的同時,更側重于功能的便捷,營銷的便利,運營的高效,讓網站(zhàn)成為營銷工具,讓軟件能切實提升企業(yè)内部管理水平和(hé)效率。優秀的程序為後期升級提供便捷的支持!

C#使用HttpClient如(rú)何判斷獲取小程序二維碼是否出錯

發表時間:2020-10-19

發布人:葵宇科技

浏覽次數:33

最開始的代碼是我從 Senparc.Weixin SDK 的源代碼中(zhōng)抄過來的,獲取小程序二維碼當時的理解是就是從微信那邊把二維碼下(xià)載下(xià)來。這樣理解也沒錯,但是有時候下(xià)載小程序二維碼由于某些原因會出錯,這個(gè)時候就需要接口區分一下(xià)下(xià)載小程序是否成功了,那麼下(xià)載小程序二維碼出錯的時候我們應該怎麼區分呢(ne),那接下(xià)來的繼續往下(xià)看。

我們先來看下(xià)最初的代碼

public static byte[] Download(string url, string data)
{
    HttpClient httpClient = new HttpClient();
    HttpContent hc = new StringContent(data);
    var ht = httpClient.PostAsync(url, hc);
    ht.Wait();
    var ft = ht.Result.Content.ReadAsByteArrayAsync();
    ft.Wait();
    var file = ft.Result;
    return file;
}

代碼很簡單就是發送請求到微信那邊,然後把結果讀成 byte 數組,為什麼讀 byte 數組,這裡解釋一下(xià),讀成 byte 數組之後再把 byte 數組轉成 base64 輸出給前端,這樣不用在服務器(qì)端保存圖片,很方便。

後面仔細閱讀微信的接口文(wén)檔發現它是會告訴你(nǐ)如(rú)何區分獲取小程序二維碼是否成功的

看到這裡我就像能不能通(tōng)過這個(gè) contentType 來區分獲取小程序二維碼是否成功呢(ne)

于是有了現在的代碼

public static KmmResult<KeyValuePair<string, string>> Download(string url, string data)
{
    var result = new KmmResult<KeyValuePair<string, string>>();

    HttpClient httpClient = new HttpClient();
    HttpContent hc = new StringContent(data);
    var ht = httpClient.PostAsync(url, hc);
    ht.Wait();

    var content = ht.Result.Content;
    if (content.Headers.ContentType.MediaType == "image/jpeg")
    {
        var byteArr = content.ReadAsByteArrayAsync();
        byteArr.Wait();
        byte[] codeData = byteArr.Result;
        string base64Str = Convert.ToBase64String(codeData);
        var pair = new KeyValuePair<string, string>("image", base64Str);
        return result.Success(pair);
    }
    else
    {
        var resultStr = content.ReadAsStringAsync();
        resultStr.Wait();
        var pair = new KeyValuePair<string, string>("json", resultStr.Result);
        return result.Success(pair);
    }
}

先拿到響應頭,然後根據返回的數據類型來判斷獲取小程序二維碼是否成功,成功的話返回的數據類型是圖片出錯的話返回的數據類型是 json 字符串,所以返回的結果集我用了一個(gè)鍵值對來保存,當然你(nǐ)也可(kě)以用元祖,這個(gè)看個(gè)人喜好,後面再根據返回的結果來判斷是否需要處理。

獲取小程序二維碼出錯就把 json 字符串反序列化成對象,然後将微信返回的英文(wén)錯誤信息翻譯成中(zhōng)文(wén)返回給前端即可(kě)。

是不是很簡單呢(ne)?如(rú)果對你(nǐ)有幫助麻煩點個(gè)贊,好了今天的文(wén)章就到這了,我們下(xià)次再見。

相關(guān)案例查看更多