我编写了一个 C# 代码来访问 USPS 地址验证 API。如果没有 & 或 # 符号,API 将返回正确的响应。但是如果请求有 # 或 & 符号,那么我会收到错误响应。
我正在使用 System.Xml.Linq 库来构建一个 XML 字符串。
差异输出。 1) 如果地址包含#
<Error>
<Number>80040B19</Number>
<Description>XML Syntax Error: Please check the XML request to see if it can be parsed.(B)</Description>
<Source>USPSCOM::DoAuth</Source>
</Error>
Run Code Online (Sandbox Code Playgroud)
2) **如果地址包含 & 则转换为 & amp; 通过 XDocument **
<Error>
<Number>80040B18</Number>
<Description>An error has occurred with the service. Please contact the system administrator, or try again.</Description>
<Source>USPSCom::DoAuth</Source>
</Error>
Run Code Online (Sandbox Code Playgroud)
这是我编写的 C# 代码。
public static XDocument ValidateUSPSAddress(string address1, string address2, string city, string state, string zip)
{
XDocument xmlResponse;
XDocument requestDoc = new XDocument(
new XElement("AddressValidateRequest",
new XAttribute("USERID", UserID),
new XElement("Revision", "1"),
new XElement("Address",
new XAttribute("ID", 0),
new XElement("Address1", address1),
new XElement("Address2", address2),
new XElement("City", city),
new XElement("State", state),
new XElement("Zip5", zip),
new XElement("Zip4", "")
)
)
);
try
{
var url = Endpoint + VerifyParam + String.Format(XMLParam, requestDoc);
var clinet = new WebClient();
var response = clinet.DownloadData(url);
xmlResponse = XDocument.Parse(System.Text.Encoding.UTF8.GetString(response));
}
catch (WebException ex)
{
throw ex;
}
return xmlResponse;
}
}
Run Code Online (Sandbox Code Playgroud)
这是一个示例请求。
http://production.shippingapis.com/ShippingAPI.dll?API=Verify&XML=<AddressValidateRequest USERID="###########">
<Revision>1</Revision>
<Address ID="0">
<Address1></Address1>
<Address2>29851 Aventura & avenue</Address2>
<City></City>
<State>CA</State>
<Zip5>92688</Zip5>
<Zip4></Zip4>
</Address>
</AddressValidateRequest>
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激。
| 归档时间: |
|
| 查看次数: |
712 次 |
| 最近记录: |