返回首页

互联网基本要求:介绍
过去几天我一直在办公室听到关于如何繁琐,它是做一些互联网请求吨诅咒。基本上,一个同事写了一些Qt代码,想要做一些简单的GET。 QNetworkAccessManager,QNe​​tworkReply,信号,槽中,deleteLater(),约3-7类 - 有点太多。所以,我抓起我是一个个人项目上使用的一些简单的类,并把他们弗拉德(尖叫的同事,不是impaler),瞧 - 问题解决了。背景
熟悉WININET是有用和非常基本的C类使用(wstring的,流)。为了解的Justin.TV REST的API - 请去的文档页。首发:从倒退
我们从这里开始,我们想要做什么。在这种情况下,我写码流播放,并我实施justin.tv支持, - 我做的{A} justin.tv API调用。

int __cdecl 

wmain(int argc, wchar_t** argv) {

    // get justin.tv stream summary

    jtv_test_streamsummary();

    

    return 0;

    UNREFERENCED_PARAMETER(argc);

    UNREFERENCED_PARAMETER(argv);

}

调用流/摘要呼吁又将1 quot; justin.tvquot API调用 - 在jtv_api类的实现(见下文)。{C}
jtv_api的类(用于此目的的修剪版)实现公共的呼叫streamsearch;我不会进入JTV的REST API的细节 - 流/搜索返回XML或JSON直播频道的所有信息汇总。 (HTTP调用组成是最小的 - 只需追加基地浴/ API /流/总结此调用的参数 - 通道,类别,语言,到指定的值过滤结果,如果有的话 - 所以不要指望这特殊的非转义的案件或工作,请记住 - 它是一个范例。)
class jtv_api {

    private:

        jtv_api() {

            }

         jtv_api() {

            }

    private:

        jtv_api(const jtv_api&);

        jtv_api& operator=(const jtv_api&);

public:

    static bool streamsummary(std::wstring& data, 

        const std::wstring& channel, 

        const std::wstring& category, 

        const std::wstring& language

    ) {

        //    compose request relative url

        std::wstring rpath = L"/api/stream/summary";

        rpath += L".xml";

        //    add query part

        std::wstring qry = L"";

        if(!channel.empty()) {

            if(!qry.empty()) {

                qry += L"&"; }

            qry += L"channel=";

            qry += channel;

        }

        if(!category.empty()) {

            if(!qry.empty()) {

                qry += L"&"; }

            qry += L"category=";

            qry += category;

        }

        if(!language.empty()) {

            if(!qry.empty()) {

                qry += L"&"; }

            qry += L"language=";

            qry += language;

        } 

        //    append query part, if any

        if(!qry.empty()) {

            rpath += L"?";

            rpath += qry;

        }

        return _execute_request(data, rpath);

    }

反过来,所有的公共电话 - 公开呼吁,在这个版本:) - 这所有的HTTP和转换字节到std :: wstring的使用的_response_to_string的助手的私人助手_execute_request路线:{体C3}
我们的兴趣点是_execute_request呼叫: {的C4}
其中凝聚了所有的互联网工作。这些电话使用如下所述互联网类(除internet_api所有类别,从internet_handle HINTERNET包装类派生)。internet_api API对象:无非看中的动态包装了WININET.DLL使用电话:InternetConnectW,InternetOpenW,InternetCloseHandle等;加载WININET.DLL,解决所有的API,使用GetProcAddress函数,并传递给所有需要的API调用其他类。实例和打开的会话对象,这就要求InternetOpenW;{C5的}实例的连接对象,调用InternetConnectW连接到主机:{5233}实例的internet_request REQ对象,,调用HttpOpenRequestW执行请求(使用默认动词),得到请求的响应(HttpSendRequestW),状态和数据(HttpQueryInfoW,InternetReadFile),并将其转换到std :: wstring的响应。{C7-}
一切都封装 - 在这个例子中,在_execute_request(数据,RPATH)调用。这是最初的目的 - 有一个简单的方法只有简单的Win32调用和简约类的HTTP客户端请求。
(支持类,pointer_t和vector_t说明 - 他们为确保更好的STL现金等价物和宇宙的提高肯定,但我的项目,最小的依赖(减去操作系统和VC运行库)是必须的,他们现在,为他们的目的。)历史版本1.0 - 2011年7月24日。

回答

评论会员:游客 时间:2012/02/04
谢谢你,我很感激。我会与其他物品回头就看见了这样的升值克里斯蒂安NBSP的问候,核发射检测
兰开斯特加思J
评论会员:游客 时间:2012/02/04
"弗拉德(。尖叫的同事,而不是impaler)"此言一出imgsrc=http://www.orcode.com/img/ico/smiley_laugh.gif所以5反正'G'
克里斯蒂安Amarie
评论会员:游客 时间:2012/02/04
{S2的}感谢很多(没错,弗拉德尖叫像他杰出的前任确实处罚奥斯曼),核弹发射检测{BR}
加斯J兰卡斯特|进出口几乎releived了有幽默感罗马尼亚 - 一次,我曾与罗马尼亚建筑师提出了类似的话,他有没有幽默感,和的气氛冰冷的一个星期左右!!

当然,我认为"遗产"/历史,旧的是什么,现在大约是惭愧 - 但我不知道 - 例如引用弗拉德是罗马尼亚人的骄傲或生病

'G'
评论会员:游客 时间:2012/02/04
克里斯蒂安Amarie:是的,这种情况发生,但我想我们是不是或多或少容易比其他人缺乏幽默感。至少在我的球队,我们尖叫所有的一天,当一个新的女孩出现bonjourmadame.fr,我们重新受洗的双子座GeGeMini公司(因为我们几乎所有的星际玩家,GG是一种生活方式我们的)-我们不笑,所以经常分析崩溃转储{S0}-但我们是一个例外,我想...NBSP弗拉德,我认为我们既感到自豪,也不生病。对我们来说是一个历史人物,大大夸大了西方文化-那是因为他有一些分歧与德国商人从布拉索夫,他们描绘,在中世纪照常来证明自己的观点,在最黑暗的颜色。(我的意思是,今天大家也正在使用的宣传,以军事干预辩护...)。然后布拉姆史托克铺平了道路德古拉的恐怖故事,其实只是德古拉(Draculea){S0的}NBSP弗拉德Tepes家庭的姓氏。的事实是,历史就是历史,主要是伪造的,当我共产党人推动从莫斯科,这样的东西有一些独立的孩子是因为民族主义。毕竟,他是一个典型的1500尺,很有决心,在战争,敌人土耳其人(10年,我想在伊斯坦布尔人质并没有使他1土耳其人的情人),用于刺穿但这样做土耳其人(这种处罚禁卫军团,尤其是太可怕了,因为一个男人变成一个女人-至少让他们认为它)。NBSP重要的是,我想,提供给罗马尼亚人的勇气,决心和骄傲感,因为我们是一个小国(实际上,当时的3个国家),约瑟夫・法因斯说"敌人在盖茨"鲍勃・霍斯金斯0-"我们需要我们的英雄"NBSP核发射检测
Teashirt2
评论会员:游客 时间:2012/02/04
非常愉快。礼炮从一个老土耳其人:小印度
的没什么
:克里斯蒂安Amarie:如果做HttpOpenRequest中是不是一个网络请求调用,那么你是正确的,肯定。除非你的意思是别的东西 - 在这种情况下,请得到澄清

*编辑:你预计要在基本perhapsnbsp; NBSP书面
NBSP {。 BR}核弹发射检测