2014-05-06 56 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