Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
Z
ZLMediaKit
概览
Overview
Details
Activity
Cycle Analytics
版本库
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
问题
0
Issues
0
列表
Board
标记
里程碑
合并请求
0
Merge Requests
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
Snippets
成员
Collapse sidebar
Close sidebar
活动
图像
聊天
创建新问题
作业
提交
Issue Boards
Open sidebar
张翔宇
ZLMediaKit
Commits
55a4c63c
Commit
55a4c63c
authored
7 years ago
by
xiongziliang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
添加http客户端测试代码
parent
ca54cb9d
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
110 行增加
和
0 行删除
+110
-0
tests/test_httpClient.cpp
+110
-0
没有找到文件。
tests/test_httpClient.cpp
0 → 100644
查看文件 @
55a4c63c
//============================================================================
// Name : main.cpp
// Author : 熊子良
// Version :
//============================================================================
#include <signal.h>
#include <unistd.h>
#include <iostream>
#include "Http/HttpDownloader.h"
#include "Http/HttpRequester.h"
#include "Util/logger.h"
#include "Util/onceToken.h"
#include "Util/File.h"
#include "Poller/EventPoller.h"
#include <list>
using
namespace
std
;
using
namespace
ZL
::
Util
;
using
namespace
ZL
::
Http
;
using
namespace
ZL
::
Poller
;
using
namespace
ZL
::
Network
;
void
programExit
(
int
arg
)
{
EventPoller
::
Instance
().
shutdown
();
}
int
main
(
int
argc
,
char
*
argv
[]){
signal
(
SIGINT
,
programExit
);
Logger
::
Instance
().
add
(
std
::
make_shared
<
ConsoleChannel
>
(
"stdout"
,
LTrace
));
///////////////////////////////http downloader///////////////////////
list
<
HttpDownloader
::
Ptr
>
downloaderList
;
auto
urlList
=
{
"http://img3.imgtn.bdimg.com/it/u=158031390,1321729164&fm=214&gp=0.jpg"
,
"https://media-cdn.tripadvisor.com/media/photo-s/06/c3/2f/64/de-notre-chambre.jpg"
};
int
i
=
0
;
for
(
auto
url
:
urlList
){
HttpDownloader
::
Ptr
downloader
(
new
HttpDownloader
());
downloader
->
setOnResult
([](
ErrCode
code
,
const
char
*
errMsg
,
const
char
*
filePath
){
if
(
code
==
Err_success
){
InfoL
<<
"download file success:"
<<
filePath
;
}
else
{
WarnL
<<
"code:"
<<
code
<<
" msg:"
<<
errMsg
;
}
});
//断点续传功能,开启后可能会遇到416的错误(因为上次文件已经下载完全)
downloader
->
startDownload
(
url
,
exeDir
()
+
to_string
(
i
++
)
+
".jpg"
,
true
);
downloaderList
.
push_back
(
downloader
);
}
///////////////////////////////http get///////////////////////
HttpRequester
::
Ptr
requesterGet
(
new
HttpRequester
());
requesterGet
->
setMethod
(
"GET"
);
//设置http头,我们假设设置cookie
requesterGet
->
addHeader
(
"Cookie"
,
"SESSIONID=e1aa89b3-f79f-4ac6-8ae2-0cea9ae8e2d7"
);
requesterGet
->
startRequester
(
"http://pv.sohu.com/cityjson?ie=utf-8"
,
[](
const
SockException
&
ex
,
const
string
&
status
,
const
HttpClient
::
HttpHeader
&
header
,
const
string
&
strRecvBody
){
if
(
ex
){
WarnL
<<
"network err:"
<<
ex
.
getErrCode
()
<<
" "
<<
ex
.
what
();
}
else
{
_StrPrinter
printer
;
for
(
auto
&
pr
:
header
){
printer
<<
pr
.
first
<<
":"
<<
pr
.
second
<<
"
\r\n
"
;
}
InfoL
<<
"
\r\n
http status:"
<<
status
<<
"
\r\n\r\n
"
<<
"header:"
<<
(
printer
<<
endl
)
<<
"
\r\n
body:"
<<
strRecvBody
;
}
});
///////////////////////////////http post///////////////////////
HttpRequester
::
Ptr
requesterPost
(
new
HttpRequester
());
requesterPost
->
setMethod
(
"POST"
);
HttpArgs
args
;
args
[
"query"
]
=
"test"
;
args
[
"from"
]
=
"en"
;
args
[
"to"
]
=
"zh"
;
args
[
"transtype"
]
=
"translang"
;
args
[
"simple_means_flag"
]
=
"3"
;
requesterPost
->
addHeader
(
"X-Requested-With"
,
"XMLHttpRequest"
);
requesterPost
->
addHeader
(
"Origin"
,
"http://fanyi.baidu.com"
);
requesterPost
->
setBody
(
args
.
make
());
requesterPost
->
startRequester
(
"http://fanyi.baidu.com/langdetect"
,
[](
const
SockException
&
ex
,
const
string
&
status
,
const
HttpClient
::
HttpHeader
&
header
,
const
string
&
strRecvBody
){
if
(
ex
){
WarnL
<<
"network err:"
<<
ex
.
getErrCode
()
<<
" "
<<
ex
.
what
();
}
else
{
_StrPrinter
printer
;
for
(
auto
&
pr
:
header
){
printer
<<
pr
.
first
<<
":"
<<
pr
.
second
<<
"
\r\n
"
;
}
InfoL
<<
"
\r\n
http status:"
<<
status
<<
"
\r\n\r\n
"
<<
"header:"
<<
(
printer
<<
endl
)
<<
"
\r\n
body:"
<<
strRecvBody
;
}
});
EventPoller
::
Instance
().
runLoop
();
static
onceToken
token
(
nullptr
,[](){
EventPoller
::
Destory
();
Logger
::
Destory
();
});
return
0
;
}
This diff is collapsed.
Click to expand it.
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论