Java PostMethod HttpPost HttpClient-带有url参数的post xml

Java PostMethod HttpPost HttpClient-带有url参数的post xml,java,jakarta-ee,http-post,httpclient,xml-rpc,Java,Jakarta Ee,Http Post,Httpclient,Xml Rpc,java中有没有一种方法可以使用PostMethod或HttpPost以及url参数发布XML?我正在做下面的事情,但它不起作用 URL - https://mytest.com?z=123&b=abc&c=%10 xml - <test> <data> This is test XML </data> </test> public String getResponse(String xml) {

java中有没有一种方法可以使用PostMethod或HttpPost以及url参数发布XML?我正在做下面的事情,但它不起作用

URL - https://mytest.com?z=123&b=abc&c=%10

xml - <test>
        <data> This is test XML </data>
      </test>

public String getResponse(String xml) {

HttpClient client = new HttpClient();
// "https://mytest.com?z=123&b=abc&c=%10"
String url="https://mytest.com";
PostMethod pMethod = new pMethod(url);
pMethod.addParameter("z","123");
pMethod.addParameter("b","abc");
pMethod.addParameter("c","%10");
post.setRequestEntity(new StringRequestEntity(xml, "application/xml", "UTF-8"));
client.executeMethod(pMethod);
}
URL-https://mytest.com?z=123&b=abc&c=%10
xml-
这是测试XML
公共字符串getResponse(字符串xml){
HttpClient=新的HttpClient();
// "https://mytest.com?z=123&b=abc&c=%10"
字符串url=”https://mytest.com";
PostMethod pMethod=新pMethod(url);
pMethod.addParameter(“z”,“123”);
pMethod.addParameter(“b”、“abc”);
pMethod.addParameter(“c”,“10”);
post.setRequestEntity(新的StringRequestEntity(xml,“应用程序/xml”,“UTF-8”);
客户端执行方法(pMethod);
}

您可以使用内置的Java工具来实现这一点,例如:

import java.net.URL;
import java.net.HttpURLConnection;
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;

public class XMLPoster {
    public static void main(String[] argv) {
        try {
            String XMLData = argv[0];
            URL url = new URL("http://posttestserver.com/post.php");
            HttpURLConnection httpConn = (HttpURLConnection)url.openConnection();
            httpConn.setRequestMethod("POST");
            httpConn.setRequestProperty("Content-Type", "application/xml; charset=utf-8");
            httpConn.setRequestProperty("Content-Length", Integer.toString(XMLData.length()));
            httpConn.setDoOutput(true);

            BufferedWriter writer = new BufferedWriter(new OutputStreamWriter((httpConn.getOutputStream())));
            writer.write(XMLData, 0, XMLData.length());
            writer.flush();
            writer.close();

            System.out.println(httpConn.getResponseCode());
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}

这段代码当然只是一个示例,不进行错误检查等。

我想我第一次误解了你的问题。您想将XML作为URL参数传递,但要通过POST传递,而不仅仅是将XML直接包含在URL中?您可以这样做:

import java.net.URL;
import java.net.HttpURLConnection;
import java.net.URLEncoder;
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;

public class XMLPoster {
    public static void main(String[] argv) {
        try {
            String XMLData = argv[0];
            URL url = new URL("http://posttestserver.com/post.php");
            String myParam = "myparam=" + URLEncoder.encode(XMLData, "UTF-8");
            HttpURLConnection httpConn = (HttpURLConnection)url.openConnection();
            httpConn.setRequestMethod("POST");
            httpConn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
            httpConn.setRequestProperty("Content-Length", Integer.toString(myParam.length()));
            httpConn.setDoOutput(true);

            BufferedWriter writer = new BufferedWriter(new OutputStreamWriter((httpConn.getOutputStream())));
            writer.write(myParam, 0, myParam.length());
            writer.flush();
            writer.close();

            System.out.println(httpConn.getResponseCode());
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}
然后,如果运行以下命令:

$ java -cp . XMLPoster '<ThisXMLisFake>But how do you know?</ThisXMLisFake>'
200
$java-cp。但你怎么知道
200
并在posttestserver.com上找到相应的文件,该文件应包含以下内容,希望这正是您想要的:

Post Params:
key: 'myparam' value: '<ThisXMLisFake>But how do you know?</ThisXMLisFake>'
Empty post body.

Upload contains PUT data:
myparam=%3CThisXMLisFake%3EBut+how+do+you+know%3F%3C%2FThisXMLisFake%3E
Post参数:
键:“myparam”值:“但是你怎么知道?”
空柱体。
上载包含PUT数据:
myparam=%3ThisXmlisFake%3EBut+how+do+you+know%3F%3C%2ThisXmlisFake%3E

我建议您使用REST客户端执行HTTP POST。此外,您应该在文章的正文中传递XML,而不是作为URL参数传递(URL编码问题)


可以找到一个发布JSON的简单示例

是否有方法将参数与XML一起传递到URL?这不包括作为post一部分的参数。我不想将XML作为参数传递。我有不同的参数随URL一起发送,同时我还需要发布XML。