欧美三级国产三级日韩三级_亚洲熟妇丰满大屁股熟妇_欧美亚洲成人一区二区三区_国产精品久久久久久模特

C#使用HttpClient如何判斷獲取小程序二維碼是否出錯 - 新聞資訊 - 云南小程序開發(fā)|云南軟件開發(fā)|云南網(wǎng)站建設(shè)-昆明葵宇信息科技有限公司

159-8711-8523

云南網(wǎng)建設(shè)/小程序開發(fā)/軟件開發(fā)

知識

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

您當(dāng)前位置>首頁 » 新聞資訊 » 小程序相關(guān) >

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

發(fā)表時間:2020-10-19

發(fā)布人:葵宇科技

瀏覽次數(shù):63

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

我們先來看下最初的代碼

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;
}

代碼很簡單就是發(fā)送請求到微信那邊,然后把結(jié)果讀成 byte 數(shù)組,為什么讀 byte 數(shù)組,這里解釋一下,讀成 byte 數(shù)組之后再把 byte 數(shù)組轉(zhuǎn)成 base64 輸出給前端,這樣不用在服務(wù)器端保存圖片,很方便。

后面仔細(xì)閱讀微信的接口文檔發(fā)現(xiàn)它是會告訴你如何區(qū)分獲取小程序二維碼是否成功的

看到這里我就像能不能通過這個 contentType 來區(qū)分獲取小程序二維碼是否成功呢

于是有了現(xiàn)在的代碼

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);
    }
}

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

獲取小程序二維碼出錯就把 json 字符串反序列化成對象,然后將微信返回的英文錯誤信息翻譯成中文返回給前端即可。

是不是很簡單呢?如果對你有幫助麻煩點個贊,好了今天的文章就到這了,我們下次再見。

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