我想从一个提供国际产品的ASP.Net电子商务应用程序中一次性或批量地获得DHL运费(存储在表中供以后使用),但在下载了基于J2EE的工具包(https://xmlpi-ea.dhl.com)并查看了文档和示例之后,我不太确定如何在.Net中实现。如果有人有获得敦豪运费的经验,我希望在正确的方向使用.Net。因为我不知道Java。
编辑刚刚发现servlet是不可发现的,这意味着我不能使用WSDL来获取代理类,并且必须依赖大量它们的XML来构建自己的客户机。有人在.NET上做过这种事吗?
发布于 2013-07-13 16:30:37
看起来他们有你可以使用的web服务。
solutions.html
发布于 2017-09-07 06:59:37
抱歉迟到了。我刚刚完成了一个集成,我在这里给你提供了方法。
首先,您必须使用xsd2code++,因为微软的XSD.EXE无法工作。不要问我为什么,但它没有找到XSD文件中包含的导入,或者我没有充分挖掘原因,一旦我尝试了xsd2code++,只需右键单击Visual中的XSD并在那里使用这个选项就很容易了。
一旦您将XSD转换为类,您就可以使用以下3种方法来使用它。请参见使用这些方法的以下2行代码。不要忘记为XDocument添加必要的用法。
一旦您在DHL网站上注册,您可以下载DHL工具包PI,其中包含所有XSD文件所在的文件夹XSD。
注意: Xsd2Code++的另一种选择是Xsd2code on CodePlex:XSD2CODE快点,因为CodePlex即将关闭。
string Request = XDocument.Parse(SerializeToXML(Quote)).ToString();
string Response = XDocument.Parse(SendRequest(Request)).ToString();
if (Response.IndexOf("DCTResponse") != -1)
DCTResponse = DeserializeFromXML<DHL.Response.DCTResponse>(Response);
else
DCTErrorResponse = DeserializeFromXML<DHL.Response.ErrorResponse>(Response);
public static string SendRequest(string XML)
{
string Response = "";
try
{
HttpWebRequest myReq = null;
myReq = WebRequest.Create(Properties.Settings.Default.DHLURL) as HttpWebRequest;
myReq.ContentType = "application/x-www-form-urlencoded";
myReq.Method = "POST";
using (System.IO.Stream stream = myReq.GetRequestStream())
{
byte[] arrBytes = ASCIIEncoding.ASCII.GetBytes(XML);
stream.Write(arrBytes, 0, arrBytes.Length);
stream.Close();
}
WebResponse myRes = myReq.GetResponse();
System.IO.Stream respStream = myRes.GetResponseStream();
System.IO.StreamReader reader = new System.IO.StreamReader(respStream, System.Text.Encoding.ASCII);
Response = reader.ReadToEnd();
myRes.Close();
myRes = null;
}
catch (Exception ex)
{
Response = ex.ToString();
}
return Response;
}
public static string SerializeToXML<T>(T toSerialize)
{
string Result = "";
XmlSerializerNamespaces ns = new XmlSerializerNamespaces(); ns.Add("", "");
using (TextWriter tw = new StringWriter())
{
using (XmlWriter writer = XmlWriter.Create(tw, new XmlWriterSettings { OmitXmlDeclaration = true }))
{
new XmlSerializer(typeof(T)).Serialize(writer, toSerialize, ns);
Result = tw.ToString();
}
}
return Result;
}
public static T DeserializeFromXML<T>(string xml)
{
var serializer = new XmlSerializer(typeof(T));
return (T)serializer.Deserialize(new StringReader(xml));
}希望这能帮上忙。
https://stackoverflow.com/questions/17631019
复制相似问题