Использование XmlRpc в C++ и Windows

Другое событие NullPointerException возникает, когда объявляется массив объектов, а затем сразу же пытается разыменовать его внутри.

String[] phrases = new String[10];
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

Этот конкретный NPE можно избежать, если порядок сравнения отменяется ; а именно, использовать .equals для гарантированного непустого объекта.

Все элементы внутри массива инициализируются их общим начальным значением ; для любого типа массива объектов, это означает, что все элементы null.

Вы должны инициализировать элементы в массиве перед доступом или разыменованием их.

String[] phrases = new String[] {"The bird", "A bird", "My bird", "Bird"};
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

7
задан Ned Batchelder 9 November 2008 в 21:47
поделиться

4 ответа

Я написал свою собственную библиотеку C ++. Это доступно на sourceforge: xmlrpcc4win

Причина, по которой я написал ее вместо использования библиотеки Криса Морли, заключалась в том, что:

  • Библиотека wininet.lib Windows предоставляет вам все функции для обработки запросов Http, поэтому я бы предпочел ее использовать. В результате мне понадобилось только 1700 LOC.
  • "wininet.lib", и, следовательно, моя реализация поддерживает HTTPS
  • Использование Крисом Морли контейнеров STL было весьма неэффективным (Крис, напишите мне, если вы читаете это).
9
ответ дан 6 December 2019 в 12:56
поделиться

Пока я не записал свою собственную библиотеку, (см. выше), здесь был мой ответ:

В настоящее время библиотека XmlRpc ++ Chris Morley является единственной реализацией/LPGL XmlRpc общественного достояния для C++ в Windows.

Существует несколько реализаций C++ для Linux, любая из которых могла быть, по-видимому, легко портирована к Windows, но факт, кажется, что никто еще не сделал так и сделал его общедоступным. Кроме того, как eczamy говорит, "Спецификация XML-RPC несколько проста, и не было бы трудно реализовать Ваш собственный клиент XML-RPC".

Я пользуюсь библиотекой Chris Morley успешно, несмотря на то, что имел, чтобы найти и зафиксировать множество ошибок. Форум Справки для этого проекта, кажется, несколько активен, но никто не исправил эти ошибки и сделал новый выпуск. Я был в корреспонденции Chris Morley, и у него есть неопределенные надежды сделать новый выпуск, и он способствовал этому stackOverflow вопросу (см. ниже/выше), и он утверждает, что исправил большинство ошибок, но до сих пор он не сделал выпуск, который исправляет много ошибок. Последний выпуск был в 2003.

Неутешительно мне, что воображаемое широко поддерживало (и простой!) протокол имеет такую плохую поддержку в Windows + C++. Может кто-то читающий эту страницу берет маркер и например, поглощает XmlRpc ++ или правильно портирует одну из реализаций Linux.

4
ответ дан 6 December 2019 в 12:56
поделиться

Существуют десятки реализаций реализаций XML-RPC, некоторых в C++, но большинства на других языках. Например, помимо XmlRpc ++ существует также XML-RPC для C и C++. Вот ПРАКТИЧЕСКОЕ РУКОВОДСТВО о том, как XML-RPC для C и библиотеки C++ может использоваться.

Спецификация XML-RPC несколько проста, и не было бы трудно реализовать Ваш собственный клиент XML-RPC. Не говоря уже о, также было бы возможно взять существующую реализацию XML-RPC в C и принести в Ваш проект C++.

Домашняя страница XML-RPC также предоставляет большую полезную информацию.

1
ответ дан 6 December 2019 в 12:56
поделиться

Просто требуемый для замечания нескольких объектов:

  • Источник в cvs репозитории для XmlRpc ++ имеет поддержку OpenSSL (хотя я не попробовал его, это было внесено другим разработчиком).

  • Большинство ошибок, о которых сообщают, исправлено в cvs; у меня нет доступа к машине Linux в данный момент, таким образом, я не сделал официальный выпуск.

  • XmlRpc ++ не является общественным достоянием. Это защищается авторским правом и лицензируется (LGPL).

Спасибо, Chris Morley

1
ответ дан 6 December 2019 в 12:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: