Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用HTTP POST从Java应用程序发送XML并在服务器上用PHP打印?_Java_Php_Http Post_Httpurlconnection - Fatal编程技术网

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

如何使用HTTP POST从Java应用程序发送XML并在服务器上用PHP打印?,java,php,http-post,httpurlconnection,Java,Php,Http Post,Httpurlconnection,通常,当我获取POST数据时,它是从HTML表单发送的,并且参数有名称,即从,然后我可以使用phpecho$\u POST['yourname']接收并打印此数据 现在我正在实现一个Java应用程序,它应该将XML格式的数据发布到指定的URL。我写了一个简单的PHP页面,我可以尝试将数据发布到其中,但数据没有打印出来。由于没有任何参数的名称,我不知道如何用PHP打印它 我已经尝试向服务器发送简单的XML,服务器应该以消息:响应,但它只以消息:响应。我做错了什么 以下是我在服务器上的PHP代码:

通常,当我获取POST数据时,它是从HTML表单发送的,并且参数有名称,即从
,然后我可以使用php
echo$\u POST['yourname']接收并打印此数据

现在我正在实现一个Java应用程序,它应该将XML格式的数据发布到指定的URL。我写了一个简单的PHP页面,我可以尝试将数据发布到其中,但数据没有打印出来。由于没有任何参数的名称,我不知道如何用PHP打印它

我已经尝试向服务器发送简单的XML,服务器应该以
消息:
响应,但它只以
消息:
响应。我做错了什么

以下是我在服务器上的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();
}
字符串xmlRequestStatus=”
";
字符串contentType=“text/xml”;
字符串charset=“ISO-8859-1”;
字符串请求=null;
试一试{
请求=String.format(“%s”,
encode(xmlRequestStatus,charset));
}捕获(不支持DencodingException e1){
e1.printStackTrace();
}
URL=null;
URLConnection=null;
OutputStream输出=null;
InputStream响应=null;
试一试{
url=新url(“http://skogsfrisk.se/test/");
}捕获(格式错误){
e、 printStackTrace();
}
试一试{
connection=url.openConnection();
connection.setDoOutput(真);
setRequestProperty(“接受字符集”,字符集);
setRequestProperty(“内容类型”,contentType);
output=connection.getOutputStream();
输出.写入(请求.获取字节(“ISO-8859-1”);
如果(output!=null)尝试{output.close();}catch(IOException e){
response=connection.getInputStream();
...
}捕获(IOE异常){
e、 printStackTrace();
}

否,$\u POST数组仅使用
多部分/表单数据填充

您可以将fopen()与php://input 包装器或$HTTP\u原始\u发布\u数据

发布xml后,尝试在浏览器中查看页面的源代码,如果您正常查看页面,则不会显示xml,除非您将其传递给htmlspecialchars()<代码>打印(美元后)是xss,所以要小心

@Jonas您是否尝试通过我上面发布的链接阅读手册页面?是的,但我又犯了一个错误,现在它工作正常吗,谢谢。谢谢,它与此PHP配合工作正常:
print-r将打印至少它自己的格式字符,如大括号