1 0 0

简易http

柳萱公子
797 1

本文共计2443个字,预计阅读时长9.1分钟。

代码如下

#pragma once
#ifndef HTTP_H
#define HTTP_H
#include <string>
#include <stdio.h>
#include <windows.h>
#include <wininet.h>
#include <fstream>
#include <sstream>
constexpr auto MAXSIZE = 1024;
#pragma comment(lib, "Wininet.lib") 

class MYhttp
{
public:
    MYhttp() = default;
    ~MYhttp() = default;
    static std::string Utf8ToGbk(const char* src_str);
    static std::string openUrl(LPCSTR url);
    static std::string GbkToUtf8(const char* src_str);
private:

};

std::string MYhttp::GbkToUtf8(const char* src_str)
{
    int len = MultiByteToWideChar(CP_ACP, 0, src_str, -1, NULL, 0);
    wchar_t* wstr = new wchar_t[len + 1];
    memset(wstr, 0, static_cast<size_t>(len) + 1);
    MultiByteToWideChar(CP_ACP, 0, src_str, -1, wstr, len);
    len = WideCharToMultiByte(CP_UTF8, 0, wstr, -1, NULL, 0, NULL, NULL);
    char* str = new char[len + 1];
    memset(str, 0, static_cast<size_t>(len) + 1);
    WideCharToMultiByte(CP_UTF8, 0, wstr, -1, str, len, NULL, NULL);
    std::string strTemp = str;
    if (wstr) delete[] wstr;
    if (str) delete[] str;
    return strTemp;
}

std::string MYhttp::Utf8ToGbk(const char* src_str)
{
    int len = MultiByteToWideChar(CP_UTF8, 0, src_str, -1, NULL, 0);
    wchar_t* wszGBK = new wchar_t[len + 1];
    memset(wszGBK, 0, static_cast<size_t>(len) * 2 + 2);
    MultiByteToWideChar(CP_UTF8, 0, src_str, -1, wszGBK, len);
    len = WideCharToMultiByte(CP_ACP, 0, wszGBK, -1, NULL, 0, NULL, NULL);
    char* szGBK = new char[len + 1];
    memset(szGBK, 0, static_cast<size_t>(len) + 1);
    WideCharToMultiByte(CP_ACP, 0, wszGBK, -1, szGBK, len, NULL, NULL);
    std::string strTemp(szGBK);
    if (wszGBK) delete[] wszGBK;
    if (szGBK) delete[] szGBK;
    return strTemp;
}

std::string MYhttp::openUrl(LPCSTR url) {
    HINTERNET hSession = InternetOpen(L"UrlTest", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
    std::stringstream ret;
    if (hSession != NULL)
    {
        HINTERNET hHttp = InternetOpenUrlA(hSession, url, NULL, 0, INTERNET_FLAG_DONT_CACHE, 0);

        if (hHttp != NULL)
        {
            //printf_s("%s\n", url);

            BYTE Temp[MAXSIZE]{ 0 };
            ULONG Number = 1;
            while (Number >0)
            {
                InternetReadFile(hHttp, Temp, MAXSIZE - 1, &Number);
                Temp[Number] = '\0';
                //printf("%s", Temp);
                ret <

最新回复 ( 1 )
全部楼主