2013-07-20 62 views
0

我想構建訪問USPS的地址Web服務的Web服務請求。 我正在構建他們想要的格式的請求URL字符串時遇到問題。 我想要做的是給一個變量的郵政編碼,使它可以是動態的。 但是USPS web服務不接受我發送的URL字符串,我猜這個格式是錯誤的。構建USPS Web服務請求

這USPS預計格式爲:

<CityStateLookupRequest USERID=」xxxxxxxx」> 
<ZipCode ID="0"> 
<Zip5>90210</Zip5> 
</ZipCode> 
<ZipCode ID="1"> 
<Zip5>20770</Zip5> 
</ZipCode> 
</CityStateLookupRequest> 

https://servername/ShippingAPI.dll?API=CityStateLookup&XML=<CityStateLookupRe 
quest USERID="username">.......</CityStateLookupRequest> 

這是我想建立的網址:

WebRequest USPSReq = String.Format("http://production.shippingapis.com/ShippingAPI.dll?API=CityStateLookup&XML=CityStateLookupRequest&USERID=xxxxxxxx&ZipCode ID=0&Zip5=" + oZip); 

如何建立這個請求的URL?

+0

他們是否期待GET或POST?特別是,你確定他們希望XML在查詢字符串中嗎?如果他們這樣做,那麼問題是,這不是XML –

+0

好的,參考是[地址信息API](https://www.usps.com/business/web-tools-apis/address-information.htm),以及他們真的希望URL中的XML! –

回答

0

只需使用您最喜歡的XML API構建該XML即可。例如:

XDocument requestXml = new XDocument(
    new XElement("CityStateLookupRequest", 
     new XAttribute("USERID", userID), 
     new XElement("ZipCode", 
      new XAttribute("ID", "0"), 
      new XElement("ZIP5", zip5))); 
var requestUrl = new UriBuilder("http://production.shippingapis.com/ShippingAPITest.dll"); 
requestUrl.Query = "API=CityStateLookup&XML=" + requestXml.ToString(); 
var request = WebRequest.Create(requestUrl.Uri); 
+0

謝謝約翰!使用XML構建器是正確的選擇。 – user2574121