Отправка сложных аргументов в Java-программу - PullRequest
0 голосов
/ 28 мая 2010

Мне нужно предоставить двоичный файл лицензии для Java-программы. Каков наилучший способ сделать это? Данные будут постоянно меняться, поэтому мне не нужно писать файл, а затем каждый раз читать его обратно.

Данные поступают со страницы PHP

Ответы [ 4 ]

2 голосов
/ 28 мая 2010

Я буду использовать команду php exec () который действует так же, как вы печатали в командной строке

В вашем классе Java у вас будет метод с именем main, который выглядит следующим образом:

public static void main(String[] args) {
    //If this is just a single binary string, args[0] will contain the license.
}

Если вы отправите лицензию в качестве первого аргумента, args[0] будет вашей входящей лицензией.

Теперь, сказав это, вы можете захотеть закодировать лицензию base64 перед ее отправкой. Это позволит убедиться, что на файл лицензии не влияют наборы символов при его передаче.

Для этой цели PHP имеет функцию base64_encode().

Как ни странно, в Java нет встроенного декодирования Base64 (во всяком случае, официально). Кодек Apache Commons включает в себя декодер.

Опять же, предполагая, что лицензия - это первое, что было передано:

import org.apache.commons.codec.binary.Base64;

public class GiveMeANameHere {

    public static void main(String[] args) {
        Base64 decoder = new Base64();
        byte[] license = decoder.decode(args[0]);

        // Do whatever you need to with the license.
        // Other strings passed in will appear as elements in args array
    }
}

Не то чтобы код Java нужно было передавать jar-кодека Apache Commons в качестве пути к классу, используя либо -cp path/to/commons-codec-1.4.jar, либо, если вы упаковали свою программу как jar, в ее файл манифеста.

1 голос
/ 28 мая 2010

Сохраните URL-адрес файла лицензии в настройках пользователя (java.util.prefs). Если пользовательские настройки являются новыми или URL-адрес и / или его содержимое больше не действительны, то запросите у пользователя новый URL-адрес (и сохраните его обратно в настройках). Затем вы можете получить содержимое представления URL java.net.URL.openStream () - работает так же хорошо для файлов или веб-адресов.

0 голосов
/ 28 мая 2010

Звучит так, будто вы хотите прочитать InputStream, поступающий напрямую через HTTP. Если в итоге вы отправитесь в путь загрузки файлов, Commons FileUpload проделал большую часть вашей работы за вас.

0 голосов
/ 28 мая 2010

как насчет передачи пути к файлу?
OK
Вы можете использовать что-то вроде «межпроцессное взаимодействие»
- Удаленный вызов метода (RMI)
http://java.sun.com/products/jdk/rmi/
- Простой протокол доступа к объектам (SOAP)
http://www.soaprpc.com/software/
http://java.sun.com/xml/jaxm/
http://ws.apache.org/soap/features.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...