这可能是一个微不足道的问题,但我尝试向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文档=&gt; 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();
}
答案 0 :(得分:2)
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
只是用于创建POST请求的更高级API。如果您采用基本方式,请更好地使用HttpURLConnection
。