Вопрос

Я пытаюсь создать приложение C ++ для доступа к ресурсу XML.Использование HTTP код работает нормально, от того, что я могу сказать из документов, все, что мне нужно сделать для работы https для работы, - это убедиться, что SSL установлен (да, установлена давление), и измените streamfactory на httpsstreamfactory.

Вот код, который работает:

Poco::Net::HTTPStreamFactory::registerFactory();
Poco::URI uri(argv[1]);

std::auto_ptr<std::istream> pStr(Poco::URIStreamOpener::defaultOpener().open(uri));
std::string str;      
StreamCopier::copyToString(*pStr.get(), str);
.

Вот код, который не удается Poco :: Net :: httpsstreamfactory :: Реструктурныйactory (); POCO :: URI URI (ARGV [1]);

std::auto_ptr<std::istream> pStr(Poco::URIStreamOpener::defaultOpener().open(uri));
std::string str;      
StreamCopier::copyToString(*pStr.get(), str);
.

Когда я делаю запрос с httpsstreamfactory, это сообщение об ошибке, которое я получаю:

NULL POINTER: _PINSTANCE [в файле "/home/chpick/poco-1.3.6p2/util/include/poco/util/application.h", линия 422]

Я прикрепил приложение .h

inline Application& Application::instance()
{
    poco_check_ptr (_pInstance);
    return *_pInstance;
}
.

Любая помощь была бы здоровой.Спасибо

Это было полезно?

Решение 2

Я закончил идти по-другому: вот что я сделал.

    const Poco::URI uri(xmlParams.restURI);
    std::string path(argv[1]);
    const Poco::Net::Context::Ptr context = new Context(Context::CLIENT_USE, "", "", "", Context::VERIFY_NONE, 9, false, "ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH");
    Poco::Net::HTTPSClientSession session(uri.getHost(), uri.getPort(), context );
    Poco::Net::HTTPRequest req(Poco::Net::HTTPRequest::HTTP_GET, argv[1] );
    req.setKeepAlive(false);

  std::string strToSend = "/";
    session.sendRequest(req) << strToSend;
    Poco::Net::HTTPResponse res;
    std::istream& rs = session.receiveResponse(res);    // typedef std::istream XMLCharInputStream;

    std::string str;    
    StreamCopier::copyToString(rs, str);

    std::istringstream istr(str);
    InputSource source(istr);
    parser.parse(&source);
.

Другие советы

Проверьте документацию для чего-либо вдоль строк сертификата проверки.Вы видите, что SSL работает сервером и обмен клиентами сертификаты, и в каждой библиотеке, которую я использовал, это делает SSL, разработчик должен создать функцию или каким-либо другим способом подтвердить сертификат, отправленный сервером;Что обычно означает, что разработчик просто принимает что-нибудь без проверки, потому что большинство людей не заботятся об этом.Ваша программа может быть SEG-неисправностью, потому что этот код называется, и ничего не возвращается, поэтому нуль разветвляется, или что-то подобное.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top