2013-07-20 71 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