在Java中将xml作为URL请求的一部分发送

Send xml as part of URL request in Java

这可能是一个琐碎的问题,但是我正尝试将Web请求发送给USPS,以获取包含基于我发送的跟踪号的跟踪信息的http发布响应(或电子邮件响应,具体取决于我的请求)。文档说xml需要像下面的

一样作为url的一部分附加

1
http://secure.shippingapis.com/ShippingAPITest.dll?API=TrackV2&XML=<PTSEmailRequest USERID="xxxxx"><TrackId>xxxxx</TrackId><RequestType>EN</RequestType></PTSEmailRequest>

我看到有两种方法可以发出xml请求,一种使用HttpPost,另一种使用URLConnection。我对如何执行此操作感到有些困惑,但我不明白在url中添加xml与普通的http请求之间有什么区别。有人可以帮我清理一下吗?

用于跟踪的USPS文档=>
https://www.usps.com/business/web-tools-apis/track-and-confirm.pdf

我阅读了这些与Stackoverflow相关的帖子
Java:如何发送XML请求?
在java

中发布XML请求

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
HttpClient httpclient = HttpClients.createDefault();
HttpPost httppost = new HttpPost("http://secure.shippingapis.com/ShippingAPITest.dll");

List<String> params = new ArrayList<String>(2);
params.add(new BasicNameValuePair("API","TrackV2"));
params.add(new BasicNameValuePair("XML", FuncTOGenerateXML()));
httppost.setEntity(new UrlEncodedFormEntity(params,"UTF-8"));

HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();

if (entity != null) {
    InputStream instream = entity.getContent();
    //.....
    // .....
    instream.close();
}

HTTP请求可以使用几种方法之一,例如POST,GET,DELETE,PUT ...在这里,我们讨论POST和GET

技术差异

  • 使用GET可以从URL中的参数中检索数据。

  • 使用POST时,将从HTTP消息内传输的数据中检索数据。

预期用途差异

  • GET适用于请求不引起更改(例如,在Google中搜索)的情况。由于您可以重复请求而没有副作用,因此数据位于URL中,并且可以存储在浏览器历史记录,收藏夹等中。

  • POST旨在在您进行更改(例如发送电子邮件,进行在线购买)时使用。相关数据没有存储在URL中(否则,如果您返回使用POST获得的页面,浏览器会多次显示一个弹出窗口,询问是否允许再次发送数据。

在实际使用中,区别不是很清楚,特别是当数据太大(URL的长度有限)时,有时会使用POST。另外,有时GET与POST的含义一起使用,因此可以将数据显示为HTML链接。

最后,URLConnection是用于打开连接的基本API(您可以将其用作POST或GET请求,基于传递数据的方式或其他方式),而HttpPost只是更高级别的API用于创建POST请求。如果您采用基本方法,请更好地使用HttpURLConnection