簡體   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