本文整理汇总了C++中HTTPResponse类的典型用法代码示例。如果您正苦于以下问题:C++ HTTPResponse类的具体用法?C++ HTTPResponse怎么用?C++ HTTPResponse使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了HTTPResponse类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: uri
/**
* Calls a web service to get a full path to a file.
* Only returns a full path string if the file exists
* @param fName :: The file name.
* @return The path to the file or an empty string in case of error/non-existing
* file.
*/
std::string ISISDataArchive::getPath(const std::string &fName) const {
g_log.debug() << "ISISDataArchive::getPath() - fName=" << fName << "\n";
if (fName.empty())
return ""; // Avoid pointless call to service
URI uri(URL_PREFIX + fName);
std::string path(uri.getPathAndQuery());
HTTPClientSession session(uri.getHost(), uri.getPort());
HTTPRequest req(HTTPRequest::HTTP_GET, path, HTTPMessage::HTTP_1_1);
session.sendRequest(req);
HTTPResponse res;
std::istream &rs = session.receiveResponse(res);
const HTTPResponse::HTTPStatus status = res.getStatus();
g_log.debug() << "HTTP response=" << res.getStatus() << "\n";
if (status == HTTPResponse::HTTP_OK) {
std::ostringstream os;
Poco::StreamCopier::copyStream(rs, os);
os << Poco::Path::separator() << fName;
try {
const std::string expectedPath = os.str();
if (Poco::File(expectedPath).exists())
return expectedPath;
} catch (Poco::Exception &) {
}
}
return "";
}
示例2: main
int main(int argc, char **argv) {
// using `web` as provider
URI uri("https://yboss.yahooapis.com/ysearch/web?q=cat");
// init the creds, I think the empty token and token secret are important
OAuth10Credentials creds(
"dj0yJmk9eGx5RzFQOVAwcDZpJmQ9WVdrOWVVUkhWamhwTkdVbWNHbzlNQS0tJnM9Y29uc3VtZXJzZWNyZXQmeD0wYw--",
"2bf8a4682c4948fb4f7add9598eef5f86b57cf93", "", "");
HTTPRequest request(HTTPRequest::HTTP_GET, uri.getPathEtc());
// put the `q` as param
HTMLForm params;
params.set("q", "cat");
creds.authenticate(request, uri, params);
std::string auth = request.get("Authorization");
std::cout << auth << std::endl;
const Context::Ptr context = new Context(Context::CLIENT_USE, "", "", "", Context::VERIFY_NONE, 9, false, "ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH");
HTTPSClientSession session(uri.getHost(), uri.getPort(), context);
session.sendRequest(request);
HTTPResponse response;
std::istream& rs = session.receiveResponse(response);
std::cout << response.getStatus() << " " << response.getReason() << std::endl;
StreamCopier::copyStream(rs, std::cout);
return 0;
}
示例3: fetchAccountPage
void fetchAccountPage(HTTPSClientSession& clientSession, NameValueCollection& cookies)
{
HTTPRequest request(HTTPRequest::HTTP_GET, "/royalgreenwich/account", HTTPMessage::HTTP_1_1);
request.setCookies(cookies);
HTTPResponse response;
std::ostream& ostr = clientSession.sendRequest(request);
std::istream& rs = clientSession.receiveResponse(response);
int statusCode = response.getStatus();
poco_information_f1(logger(), "Status %d", statusCode);
std::vector<HTTPCookie> newCookies;
response.getCookies(newCookies);
for (HTTPCookie cookie : newCookies)
{
poco_information_f1(logger(), "Cookie %s", cookie.toString());
if (cookies.has(cookie.getName()))
{
cookies.set(cookie.getName(), cookie.getValue());
}
else
{
cookies.add(cookie.getName(), cookie.getValue());
}
}
StreamCopier::copyStream(rs, std::cout);
}
示例4: TestClient
//|//////////////////// TestClient //////////////////////////////////////////
void TestClient()
{
threadlib::ThreadControl tc;
HTTPServer server;
server.sigRespond.attach([&](HTTPServer::socket_t socket, HTTPRequest const &request) {
cout << " ServerReceive: " << request.method() << " " << request.location() << endl;
server.send(socket, HTTPResponse("<HTML>OK</HTML>"));
});
server.start(1202);
HTTPResponse response;
HTTPClient::execute(HTTPRequest("GET", "http://127.0.0.1:1202/objects"), &response);
// HTTPClient::execute(HTTPRequest("GET", "http://www.websocket.org/echo.html"), &response);
if (response.status() == 200)
{
cout << " ClientReceive: " << string(response.payload().begin(), response.payload().end()) << "\n";
}
else
cout << " ** No Data\n";
tc.join_threads();
cout << endl;
}
示例5: runDelete
void runDelete(){
try{
std::string result;
URI uri("http://jsonplaceholder.typicode.com/posts/" + std::to_string(request->getPostID()) );
std::string path(uri.getPathAndQuery());
HTTPClientSession session(uri.getHost(), uri.getPort());
HTTPRequest hrequest(HTTPRequest::HTTP_DELETE, path, HTTPMessage::HTTP_1_1);
HTTPResponse response;
session.sendRequest(hrequest);
std::istream& rs = session.receiveResponse(response);
if(response.getStatus() == Poco::Net::HTTPResponse::HTTP_OK){
Response *res = new Response;
res->setReqID(reqID);
res->setHTTPStatus(HTTPResponse::HTTP_OK);
observer.responseQueue.enqueueNotification(new ResponseNotification(res));
{
FastMutex::ScopedLock lock(Observer::observerMutex);
observer.setResponseAvailable(true);
}
}
else {
Response *res = new Response;
res->setHTTPStatus(response.getStatus());
res->setReqID(reqID);
observer.responseQueue.enqueueNotification(new ResponseNotification(res));
{
FastMutex::ScopedLock lock(Observer::observerMutex);
observer.setResponseAvailable(true);
}
}
}
catch(Exception& exc){
std::cerr<< exc.displayText() << std::endl;
}
}
示例6: fetchLoginPage
void fetchLoginPage(HTTPSClientSession& clientSession, NameValueCollection& cookies)
{
HTTPRequest request(HTTPRequest::HTTP_GET, "/royalgreenwich/login?message=borrowerservices_notloggedin&referer=https%3A%2F%2Fcapitadiscovery.co.uk%2Froyalgreenwich%2Faccount", HTTPMessage::HTTP_1_1);
request.setCookies(cookies);
HTTPResponse response;
std::ostream& ostr = clientSession.sendRequest(request);
std::istream& rs = clientSession.receiveResponse(response);
int statusCode = response.getStatus();
poco_information_f1(logger(), "Status %d", statusCode);
std::vector<HTTPCookie> newCookies;
response.getCookies(newCookies);
for (HTTPCookie cookie : newCookies)
{
poco_information_f1(logger(), "Cookie %s", cookie.toString());
if (cookies.has(cookie.getName()))
{
cookies.set(cookie.getName(), cookie.getValue());
}
else
{
cookies.add(cookie.getName(), cookie.getValue());
}
}
}
示例7: authInfo
void HTTPCredentialsTest::testAuthenticationParams()
{
const std::string authInfo("nonce=\"212573bb90170538efad012978ab811f%lu\", realm=\"TestDigest\", response=\"40e4889cfbd0e561f71e3107a2863bc4\", uri=\"/digest/\", username=\"user\"");
HTTPAuthenticationParams params(authInfo);
assert (params["nonce"] == "212573bb90170538efad012978ab811f%lu");
assert (params["realm"] == "TestDigest");
assert (params["response"] == "40e4889cfbd0e561f71e3107a2863bc4");
assert (params["uri"] == "/digest/");
assert (params["username"] == "user");
assert (params.size() == 5);
assert (params.toString() == authInfo);
params.clear();
HTTPRequest request;
request.set("Authorization", "Digest " + authInfo);
params.fromRequest(request);
assert (params["nonce"] == "212573bb90170538efad012978ab811f%lu");
assert (params["realm"] == "TestDigest");
assert (params["response"] == "40e4889cfbd0e561f71e3107a2863bc4");
assert (params["uri"] == "/digest/");
assert (params["username"] == "user");
assert (params.size() == 5);
params.clear();
HTTPResponse response;
response.set("WWW-Authenticate", "Digest realm=\"TestDigest\", nonce=\"212573bb90170538efad012978ab811f%lu\"");
params.fromResponse(response);
assert (params["realm"] == "TestDigest");
assert (params["nonce"] == "212573bb90170538efad012978ab811f%lu");
assert (params.size() == 2);
}
示例8: svs
void HTTPSClientSessionTest::testPostLargeChunkedKeepAlive()
{
SecureServerSocket svs(32322);
HTTPServer srv(new TestRequestHandlerFactory(), svs, new HTTPServerParams());
srv.start();
try
{
HTTPSClientSession s("localhost", srv.port());
s.setKeepAlive(true);
for (int i = 0; i < 10; ++i)
{
HTTPRequest request(HTTPRequest::HTTP_POST, "/keepAlive", HTTPMessage::HTTP_1_1);
std::string body(16000, 'x');
request.setChunkedTransferEncoding(true);
s.sendRequest(request) << body;
HTTPResponse response;
std::istream& rs = s.receiveResponse(response);
assert (response.getChunkedTransferEncoding());
assert (response.getContentLength() == HTTPMessage::UNKNOWN_CONTENT_LENGTH);
std::ostringstream ostr;
StreamCopier::copyStream(rs, ostr);
assert (ostr.str() == body);
}
srv.stop();
}
catch (...)
{
srv.stop();
throw;
}
}
示例9: uri
ofxHttpResponse ofxHttpUtils::getUrl(string url){
ofxHttpResponse response;
try{
URI uri(url.c_str());
std::string path(uri.getPathAndQuery());
if (path.empty()) path = "/";
HTTPClientSession session(uri.getHost(), uri.getPort());
HTTPRequest req(HTTPRequest::HTTP_GET, path, HTTPMessage::HTTP_1_1);
if(auth.getUsername()!="") auth.authenticate(req);
session.setTimeout(Poco::Timespan(timeoutSeconds,0));
session.sendRequest(req);
HTTPResponse res;
istream& rs = session.receiveResponse(res);
response=ofxHttpResponse(res, rs, path);
if(response.status>=300 && response.status<400){
Poco::URI uri(req.getURI());
uri.resolve(res.get("Location"));
response.location = uri.toString();
}
ofNotifyEvent( newResponseEvent, response, this );
//std::cout << res.getStatus() << " " << res.getReason() << std::endl;
//StreamCopier::copyStream(rs, std::cout);
}catch (Exception& exc){
std::cerr << exc.displayText() << "\n";
}
return response;
}
示例10: httpRequestRecieved
uHTTP::HTTP::StatusCode TestDevice::httpRequestRecieved(HTTPRequest *httpReq)
{
ParameterList paramList;
httpReq->getParameterList(paramList);
for (int n=0; n<paramList.size(); n++) {
Parameter *param = paramList.getParameter(n);
cout << "["<< n << "] : "<< param->getName() << "= "<< param->getValue() << endl;
}
string uri;
httpReq->getURI(uri);
if (uri.find(PRESENTATION_URI) == string::npos) {
return Device::httpRequestRecieved(httpReq);
}
string contents;
contents = "<HTML><BODY><H1>";
contents += "";
contents += "</H1></BODY></HTML>";
HTTPResponse httpRes;
httpRes.setStatusCode(HTTP::OK_REQUEST);
httpRes.setContent(contents);
return httpReq->post(&httpRes);
}
示例11: formatUri
void GalaxyFDSClient::refreshObject(const string& bucketName, const string&
objectName) {
string uri = formatUri(_pConfig->getBaseUri(), bucketName + "/" + objectName,
_emptySubResources);
uri += "?refresh";
URI pocoUri(uri);
shared_ptr<HTTPClientSession> pSession(_pSessionFacotry->createClientSession(
pocoUri));
pSession->setHost(pocoUri.getHost());
pSession->setPort(pocoUri.getPort());
HTTPRequest request(HTTPRequest::HTTP_PUT, uri, HTTPMessage::HTTP_1_1);
prepareRequestHeaders(uri, HTTPRequest::HTTP_PUT, "", _emptyStream,
*_pEmptyMetadata, request);
HTTPResponse response;
pSession->sendRequest(request);
istream& rs = pSession->receiveResponse(response);
if (response.getStatus() != HTTPResponse::HTTP_OK) {
stringstream msg;
msg << "Prefetch object failed, status=" << response.getStatus() << ", reason=";
StreamCopier::copyStream(rs, msg);
throw GalaxyFDSClientException(response.getStatus(), msg.str());
}
}
示例12: submitLoginPage
void submitLoginPage(HTTPSClientSession& clientSession, NameValueCollection& cookies)
{
HTTPRequest request(HTTPRequest::HTTP_POST, "/royalgreenwich/sessions", HTTPMessage::HTTP_1_1);
request.setCookies(cookies);
HTTPResponse response;
HTMLForm loginForm;
loginForm.add("barcode", "28028005913354");
loginForm.add("pin", "3347");
loginForm.prepareSubmit(request);
std::ostream& ostr = clientSession.sendRequest(request);
loginForm.write(ostr);
std::istream& rs = clientSession.receiveResponse(response);
int statusCode = response.getStatus();
poco_information_f1(logger(), "Status %d", statusCode);
std::vector<HTTPCookie> newCookies;
response.getCookies(newCookies);
for (HTTPCookie cookie : newCookies)
{
poco_information_f1(logger(), "Cookie %s", cookie.toString());
if (cookies.has(cookie.getName()))
{
cookies.set(cookie.getName(), cookie.getValue());
}
else
{
cookies.add(cookie.getName(), cookie.getValue());
}
}
}
示例13: in
bool
EarthFile::readXML( const std::string& location )
{
bool success = false;
if ( osgDB::containsServerAddress( location ) )
{
HTTPResponse response = HTTPClient::get( location );
if ( response.isOK() && response.getNumParts() > 0 )
{
success = readXML( response.getPartStream( 0 ), location );
}
}
else
{
if (osgDB::fileExists(location) && (osgDB::fileType(location) == osgDB::REGULAR_FILE))
{
std::ifstream in( location.c_str() );
success = readXML( in, location );
}
}
if ( success )
{
std::string filename = location;
if (!osgDB::containsServerAddress(filename))
{
filename = osgDB::getRealPath( location );
}
_map->setReferenceURI( filename );
}
return success;
}
示例14: main
int main(int argc, char** argv)
{
if (argc != 2)
{
Path p(argv[0]);
std::cout << "usage: " << p.getBaseName() << " <uri>" << std::endl;
std::cout << " fetches the resource identified by <uri> and print it to the standard output" << std::endl;
return 1;
}
try
{
URI uri(argv[1]);
std::string path(uri.getPathAndQuery());
if (path.empty()) path = "/";
HTTPClientSession session(uri.getHost(), uri.getPort());
HTTPRequest req(HTTPRequest::HTTP_GET, path, HTTPMessage::HTTP_1_1);
session.sendRequest(req);
HTTPResponse res;
std::istream& rs = session.receiveResponse(res);
std::cout << res.getStatus() << " " << res.getReason() << std::endl;
StreamCopier::copyStream(rs, std::cout);
}
catch (Exception& exc)
{
std::cerr << exc.displayText() << std::endl;
return 1;
}
return 0;
}
示例15: sendFile
// Sends a file to the server
void sendFile(HTTPClient* client, string filename)
{
HTTPRequest request;
HTTPResponse response;
// Send a HEAD request
request.method = "HEAD";
request.path = "/" + filename;
response = client->send(request);
if (response.status == 200) {
// The file exists. Compare MD5 checksums
// TODO: Make a local MD5 checksums cache when this get's multithreaded.
if (WebUtil::MD5(filename) == response.getHeader("Content-MD5")) {
return;
}
}
request.method = "PUT";
request.path = "/" + filename;
FILE* f = fopen(filename.c_str(),"r");
if (f == NULL) {
throw_exception("Couldn't read " + filename);
}
request.setBody(f);
request.addHeader("Content-type", WebUtil::pathToMimetype(filename));
request.addHeader("Content-length", WebUtil::filesize(filename));
response = client->send(request);
fclose(f);
}