2014-05-06 123 views
2

这可能是一个微不足道的问题,但我试图发送Web请求到美国邮政获取http邮寄回复(或电子邮件回应取决于我的请求)包含跟踪信息基于我在发送跟踪号码。该文件说,XML需要追加为URL的一部分像下面发送XML作为URL中的Java请求的一部分

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

我看到有2种方式,使一个XML请求,一个使用HttpPost和其他URLConnection。我有点抛出我如何去了解这一点,我不明白什么是追加URL中的xml和一个正常的http请求之间的区别。有人可以帮我清理一下吗?

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

USPS文档我读这些相关#1帖子
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(); 
} 

回答

2

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

技术差异

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

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

使用用途的不同

  • GET旨在当请求不引起的变化中使用(V.G。,搜索在谷歌)。由于您可以重复请求而没有副作用,因此数据位于URL中并且可以存储在浏览器历史记录,收藏夹等中。

  • POST在您执行更改时打算使用(vg发送e邮件,进行在线购买)。相关数据不会与URL一起存储(然后,如果您返回使用POST获取的页面,则浏览器会多次向您显示一个弹出窗口,要求重新发送数据的权限。)

在实际使用中,区别不是那么清楚,特别是当数据太大(URL长度有限)时有时使用POST。另外,有时候GET与POST的含义一起使用,所以数据可以作为HTML链接提供

最后,URLConnection是用于打开连接的基本API(可以用作POST或GET请求,基于如何传递数据或其他方式),HttpPost是只是一个高用于创建POST请求的r级API。如果你走的基本方式,更好地使用HttpURLConnection

+0

谢谢你的回复。我理解GET和POST请求之间的区别,在这种情况下,我会在发送值时发送POST请求。我打算问的是,我是否应该尽快发布一个常规邮件请求,尽管xml是url的一部分?看到我更新的帖子。 – crazyim5

+0

如果您正在执行POST请求,则数据不应该是URL的一部分(或者,如果数据是URL的一部分,则应该执行GET请求)。也就是说,有些网站是sl or or bad的或实施得不好,并可能希望您在URL和连接负载中发送数据。至于美国邮政,根据您在链接中提供的文档,似乎期望得到一个GET请求(即使我在URL中发现了一点奇怪的XML)。 – SJuan76

+0

感谢您的输入。是的,有点奇怪的是xml被请求作为URL的一部分,因为这可能会导致一个非常大的url字符串,但如果他们的服务器可以处理它,那么应该没问题。 – crazyim5