2

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

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

我看到有两种方法可以发出 xml 请求,一种是 using HttpPost,另一种是URLConnection. 我对我的处理方式有点失望,我无法理解在 url 中附加 xml 和正常的 http 请求之间有什么区别。有人可以帮我清理一下吗?

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

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

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();
}
4

1 回答 1

2

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

技术差异

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

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

预期用途差异

  • GET 旨在在请求不会导致更改时使用(vg,在 Google 中搜索)。由于您可以重复请求而不会产生副作用,因此数据在 URL 中,可以存储在浏览器历史记录、收藏夹等中。

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

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

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

于 2014-05-06T23:05:41.363 回答