繁体   English   中英

如何使用HTTP POST从Java应用程序发送XML并在服务器上使用PHP打印它?

[英]How can I send XML from a Java application and print it with PHP on the server, using HTTP POST?

通常,当我获取POST数据时,它是从HTML表单发送的,并且参数具有名称,即来自<input type="text" name="yourname" /> ,然后我可以使用php echo $_POST['yourname'];接收并打印此数据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();
}

不,仅使用multipart/form-data编码类型填充$ _POST数组。

您可以将fopen()与php:// input包装器一起使用或$ HTTP_RAW_POST_DATA
http://www.php.net/manual/en/wrappers.php.php

发布xml后,尝试在浏览器中查看页面的源代码,如果您正常查看页面,则除非将其传递给htmlspecialchars(),否则xml不会显示。 print_r($_POST); 是xss,所以要小心。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM