Пример #1
0
bool doRequest(Poco::Net::HTTPClientSession & session, string requestBody, Poco::Net::HTTPRequest & request, Poco::Net::HTTPResponse & response)
{
	session.setKeepAlive(true);
	request.setKeepAlive(true);
	request.setContentType("application/x-www-form-urlencoded");
	request.setContentLength(requestBody.length());

	session.sendRequest(request) << requestBody;
	std::istream& rs = session.receiveResponse(response);
	std::cout << response.getStatus() << " " << response.getReason() << std::endl;
	if (response.getStatus() != Poco::Net::HTTPResponse::HTTP_UNAUTHORIZED)
	{
		
		//std::ofstream ofs("Poco_banner.jpg", std::fstream::binary);
		//StreamCopier::copyStream(rs, ofs);
		// Print to standard output
		cout << "RECEIVED:" << endl;
		//std::copy(std::istream_iterator<char>(rs), std::istream_iterator<char>(), std::ostream_iterator<char>(std::cout));
		string received = "";
		string temp;
		//rec << rs.rdbuf();
		
		while (std::getline(rs, temp))
		{
			received += temp + "\n";
		}

		cout << received << endl;
		return true;
	}
	else
	{
		//it went wrong ?
		return false;
	}
}
Пример #2
0
void HttpAssetTransfer::SendHttpPostAssetRequest(const std::string &host, const std::string &json_data)
{
    std::string ASSET_UPLOADING_CONTENT_TYPE = "application/json";
    int content_length = json_data.length();
    std::istringstream stream(json_data);

    int send_count = 0; //\todo make member var

    Poco::URI uri(host);
    std::string path(uri.getPathAndQuery());
    if (path.empty())
        path = "/";

    http_session_.setHost(uri.getHost());
    http_session_.setPort(uri.getPort());

    Poco::Timespan time_out(HTTP_TIMEOUT_MS*1000);

    Poco::Net::HTTPRequest request;
    request.setMethod(Poco::Net::HTTPRequest::HTTP_POST);
    std::string t = uri.toString();
    request.setURI(uri.getPath());
    request.setVersion(Poco::Net::HTTPMessage::HTTP_1_1);
    request.setContentType(ASSET_UPLOADING_CONTENT_TYPE);
    request.setContentLength(content_length);
    request.setKeepAlive(false);

    try
    {
        std::ostream &request_body = http_session_.sendRequest(request);
        request_body.write(json_data.c_str(), json_data.length());

        std::istream &s = http_session_.receiveResponse(http_response_);

        Poco::Net::HTTPResponse::HTTPStatus status = http_response_.getStatus();
        switch (status)
        {
        case Poco::Net::HTTPResponse::HTTP_OK:
            response_stream_ = &s;
            response_size_ = http_response_.getContentLength();
            break;

        default:
            std::string reason = http_response_.getReasonForStatus(status);
            std::stringstream error;
            error << "Http POST failed for: ";
            error << host << std::endl;
            error << "Reason: " << reason;
            AssetModule::LogError(error.str());
            failed_ = true;
            return;
        }
    }
    catch (Poco::Net::MessageException &e)
    {
        std::string u = request.getURI();
        std::string m = request.getMethod();
        std::string error = e.message();

    }
    catch (Poco::Exception &e)
    {
        std::stringstream error;
        error << "Http POST failed for: ";
        error << host << std::endl;
        error << "Reason: " << e.displayText();
        AssetModule::LogError(error.str());
        failed_ = true;
        return;
    }
}