Как я могу отправить XML из приложения Java и распечатать его с помощью PHP на сервере, используя HTTP POST? - PullRequest
1 голос
/ 29 июня 2010

Обычно, когда я получаю данные POST, они отправляются из формы HTML, а параметры имеют имена, то есть из <input type="text" name="yourname" />, тогда я могу получить и распечатать эти данные с помощью php echo $_POST['yourname'];.

Теперь я реализую приложение Java, которое должно отправлять данные в формате XML по указанному URL. Я написал простую страницу PHP, на которой я могу попытаться отправить данные, но данные не распечатываются. И поскольку нет никаких параметров, я не знаю, как мне печатать его на PHP.

Я попытался отправить простой XML на сервер, и сервер должен ответить MESSAGE: <XML>, но это только ответ MESSAGE:. Что я делаю не так?

Вот мой PHP-код на сервере:

<?php 
echo 'MESSAGE:';
print_r($_POST); ?>

А вот мой код Java на клиенте:

String xmlRequestStatus = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>
    <test></test>";
String contentType = "text/xml";
String charset = "ISO-8859-1";
String request = null;
try {
    request = String.format("%s",
        URLEncoder.encode(xmlRequestStatus, charset));
} catch (UnsupportedEncodingException e1) {
    e1.printStackTrace();
}
URL url = null;
URLConnection connection = null;
OutputStream output = null;
InputStream response = null;
try {
    url = new URL("http://skogsfrisk.se/test/");
} catch (MalformedURLException e) {
    e.printStackTrace();
}

try {
    connection = url.openConnection();
    connection.setDoOutput(true);
    connection.setRequestProperty("Accept-Charset", charset);
    connection.setRequestProperty("Content-Type", contentType);
    output = connection.getOutputStream();
    output.write(request.getBytes("ISO-8859-1"));
    if(output != null) try { output.close(); } catch (IOException e) {}

    response = connection.getInputStream();
    ...
} catch (IOException e) {
    e.printStackTrace();
}

Ответы [ 2 ]

3 голосов
/ 29 июня 2010

Нет, массив $ _POST заполняется только с multipart/form-data enctype.

, вы можете использовать либо fopen () с php: // input wrapper, либо $ HTTP_RAW_POST_DATA
http://www.php.net/manual/en/wrappers.php.php

0 голосов
/ 29 июня 2010

Попробуйте просмотреть источник страницы в своем браузере после публикации xml, xml не будет отображаться, если вы просматриваете страницу в обычном режиме, если вы не передадите ее htmlspecialchars ().print_r($_POST); это xss, так что будьте осторожны.

...