Remove HttpFile to FormPart; refine payload prepare.

This commit is contained in:
Chunting Gu
2019-04-12 14:18:23 +08:00
parent 80d0c73617
commit a96109c3b7
24 changed files with 451 additions and 316 deletions
+12 -4
View File
@@ -14,9 +14,13 @@ bool kSslVerify = true;
#endif
void Help(const char* argv0) {
std::cout << "Usage: " << argv0 << " <upload_dir>" << std::endl;
std::cout << "Usage: " << argv0 << " <upload_dir> [url]" << std::endl;
std::cout << "Default Url: http://httpbin.org/post" << std::endl;
std::cout << " E.g.," << std::endl;
std::cout << " " << argv0 << "E:/github/webcc/data/upload" << std::endl;
std::cout << " " << argv0
<< "E:/github/webcc/data/upload http://httpbin.org/post"
<< std::endl;
}
int main(int argc, char* argv[]) {
@@ -29,6 +33,13 @@ int main(int argc, char* argv[]) {
const webcc::Path upload_dir(argv[1]);
std::string url;
if (argc == 3) {
url = argv[2];
} else {
url = "http://httpbin.org/post";
}
namespace bfs = boost::filesystem;
if (!bfs::is_directory(upload_dir) || !bfs::exists(upload_dir)) {
@@ -38,9 +49,6 @@ int main(int argc, char* argv[]) {
webcc::HttpClientSession session;
//std::string url = "http://httpbin.org/post";
std::string url = "http://localhost:8080/upload";
try {
auto r = session.PostFile(url, "file",
upload_dir / "remember.txt");
+4 -4
View File
@@ -12,11 +12,11 @@ public:
void Handle(const webcc::RestRequest& request,
webcc::RestResponse* response) final {
if (request.http->method() == webcc::http::methods::kPost) {
std::cout << "files: " << request.http->files().size() << std::endl;
std::cout << "files: " << request.http->form_parts().size() << std::endl;
for (auto& pair : request.http->files()) {
std::cout << "name: " << pair.first << std::endl;
std::cout << "data: " << std::endl << pair.second.data() << std::endl;
for (auto& file : request.http->form_parts()) {
std::cout << "name: " << file.name() << std::endl;
std::cout << "data: " << std::endl << file.data() << std::endl;
}
response->content = "OK";
+3 -3
View File
@@ -18,8 +18,8 @@ void ExampleBasic() {
auto r = session.Request(webcc::HttpRequestBuilder{}
.Get()
.Url("http://httpbin.org/get")
.Parameter("key1", "value1")
.Parameter("key2", "value2")
.Query("key1", "value1")
.Query("key2", "value2")
.Header("Accept", "application/json")());
std::cout << r->content() << std::endl;
@@ -44,7 +44,7 @@ void ExampleHttps() {
auto r = session.Request(webcc::HttpRequestBuilder{}
.Get()
.Url("https://httpbin.org/get")
.Parameter("key1", "value1")
.Query("key1", "value1")
.Header("Accept", "application/json")());
std::cout << r->content() << std::endl;