2010-06-29 69 views
1

通常,当我收到POST数据时,它将从HTML表单发送,并且参数具有名称,即<input type="text" name="yourname" />,然后我可以使用php echo $_POST['yourname'];接收并打印这些数据。如何使用HTTP POST从Java应用程序发送XML并在服务器上使用PHP进行打印?

现在我正在实现一个Java应用程序,该应用程序应该以XML格式将数据发布到指定的URL。我写了一个简单的PHP页面,我可以尝试POST数据,但数据不打印。由于没有任何参数的名称,我不知道我应该如何使用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(); 
} 

回答

3

号,$ _ POST阵列被只multipart/form-data ENCTYPE填充。

您可以使用fopen()函数在PHP://输入包装或$ HTTP_RAW_POST_DATA
http://www.php.net/manual/en/wrappers.php.php

+0

@Jonas您是否尝试通过我上面发布的链接阅读手册页? – 2010-06-29 18:25:13

+0

是的,但我做了另一个错误,现在它工作正常,谢谢。 – Jonas 2010-06-29 18:47:40

+0

谢谢,它可以很好的使用这个PHP:'<?php echo'MESSAGE:'。$ HTTP_RAW_POST_DATA; ?>' – Jonas 2010-06-29 18:49:55

0

尝试查看网页的源代码在浏览器中,你发布的XML后,XML是不会显示如果你正在查看页面,除非你把它传递给htmlspecialchars()。 print_r($_POST);是xss所以要小心。

+0

print-r至少会打印出自己的格式化字符,比如花括号 – 2010-06-29 18:28:33

相关问题