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

标签 java xml xmlhttprequest http-post usps

这可能是一个微不足道的问题,但我正在尝试向 USPS 发送网络请求,以获取包含基于我发送的跟踪号码的跟踪信息的 http post 响应(或电子邮件响应,具体取决于我的请求)。文档说 xml 需要作为 url 的一部分附加,如下所示

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: How to send a XML request?
posting XML request in java

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 中,并且可以存储在浏览器历史记录、 Collection 夹等中。

  • POST 旨在在您执行更改时使用(例如发送电子邮件、在线购买)。相关数据不会与 URL 一起存储(因此,如果您返回到使用 POST 获取的页面,浏览器多次会弹出窗口,请求您允许再次发送数据。

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

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

关于java - 在 Java 中将 xml 作为 URL 请求的一部分发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23505858/

相关文章:

c# - 在 C# 中快速检查字符串是 XML 还是 JSON 的方法

java - 使用 Spring 时获取 HttpMessageNotReadableException 异常 - RestTemplate

java - 如何使用 ByteBuddy @Pipe 注解和 @FieldValue 来实现委托(delegate)模式?

java - StandardPasswordEncoder 抛出 NullPointerException : SpringSecurity

java - Android MainActivity.java 错误(适用于平板电脑,但不适用于手机)

c# - <url> 前缀 "cannot be redefined from "在同一个开始元素标签中

javascript - 非常简单的 XMLHttpRequest 不起作用

javascript - 如何让 XHR 将responseXML 显示为HTML 元素(没有innerHTML)

javascript - 如何判断 XMLHTTPRequest 是否命中浏览器缓存

java - 从 NavigableSet 中获取特定索引处的元素