【问题标题】:Send xml as part of URL request in Java在 Java 中将 xml 作为 URL 请求的一部分发送
【发布时间】:2014-06-23 17:24:44
【问题描述】:

这可能是一个微不足道的问题,但我正在尝试向 USPS 发送网络请求,以获取包含基于我发送的跟踪号的跟踪信息的 http 发布响应(或电子邮件响应,具体取决于我的请求)。文档说 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();
}

【问题讨论】:

    标签: java xml xmlhttprequest http-post usps


    【解决方案1】:

    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 更好。

    【讨论】:

    • 感谢您的回复。我了解 GET 和 POST 请求之间的区别,在这种情况下,我将在发送值时发出 POST 请求。我想问的是,尽管 xml 是 url 的一部分,我是否应该只发出常规的 post 请求?查看我更新的帖子。
    • 如果您正在执行 POST 请求,则数据不应是 URL 的一部分(或者,如果数据是 URL 的一部分,您应该执行 GET 请求)。也就是说,有些网站草率或实施不当,可能希望您同时在 URL 和连接有效负载中发送数据。至于 USPS,根据您在链接中提供的文档,它似乎正在等待一个 GET 请求(即使我发现在 URL 中获取 XML 有点奇怪)。
    • 感谢您的意见。是的,将 xml 作为 url 的一部分请求有点奇怪,因为这可能会导致非常大的 url 字符串,但如果他们的服务器可以处理它,那么应该没问题。
    猜你喜欢
    • 1970-01-01
    • 2014-03-12
    • 2016-06-26
    • 1970-01-01
    • 2012-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-14
    相关资源
    最近更新 更多