首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >试图使用ASP.Net获取DHL的运费,但是DHL的文档/样例是面向J2EE的。有人在.Net上这样做可以提供一些方向吗?

试图使用ASP.Net获取DHL的运费,但是DHL的文档/样例是面向J2EE的。有人在.Net上这样做可以提供一些方向吗?
EN

Stack Overflow用户
提问于 2013-07-13 14:20:21
回答 2查看 2.1K关注 0票数 2

我想从一个提供国际产品的ASP.Net电子商务应用程序中一次性或批量地获得DHL运费(存储在表中供以后使用),但在下载了基于J2EE的工具包(https://xmlpi-ea.dhl.com)并查看了文档和示例之后,我不太确定如何在.Net中实现。如果有人有获得敦豪运费的经验,我希望在正确的方向使用.Net。因为我不知道Java。

编辑刚刚发现servlet是不可发现的,这意味着我不能使用WSDL来获取代理类,并且必须依赖大量它们的XML来构建自己的客户机。有人在.NET上做过这种事吗?

EN

回答 2

Stack Overflow用户

发布于 2013-07-13 16:30:37

看起来他们有你可以使用的web服务。

solutions.html

票数 0
EN

Stack Overflow用户

发布于 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即将关闭。

代码语言:javascript
复制
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));
        }

希望这能帮上忙。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17631019

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档