代码之家  ›  专栏  ›  技术社区  ›  Jonas

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

  •  1
  • Jonas  · 技术社区  · 15 年前

    通常,当我得到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 回复  |  直到 15 年前
        1
  •  3
  •   Your Common Sense    15 年前

    否,$Post数组仅用 multipart/form-data EncType。

    您可以将fopen()与php://input wrapper或$http_raw_post_数据一起使用。
    http://www.php.net/manual/en/wrappers.php.php

        2
  •  0
  •   rook    15 年前

    在发布XML之后,尝试在浏览器中查看页面的源代码,如果您正常查看页面,则XML不会显示出来,除非将其传递给htmlspecialchars()。 print_r($_POST); XSS如此小心吗?