Delphi 7和XML通信

1 xml delphi asmx

我有一些(5年)Delphi(30年帕斯卡)的经验,但在WEB编程方面却没有那么多.我已经在我的一些程序中安装了FTP(文件传输)和SMTP(邮件)支持,并取得了成功.我也使用了HTTP(Get),然后解析了一些字符串,也取得了成功.但是,就是这样!

现在我必须连接到https(安全)URL并使用ASMX服务来发送和接收XML文件.该文件没问题,已经过测试.

但是..我几乎不知道如何使用Delphi 7实现这种连接.我怀疑SOAP(简单对象访问协议)和可疑离子是从这个例子中引出的,在这里它创建对象"out out稀薄的空气"没有视觉课,但我不确定!

书面示例在C#中:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Xml;
using System.Xml.Serialization;
using System.IO;


namespace SendaStgrXML
{
    public partial class AAmain : Form
    {
        public AAmain()
        {
            InitializeComponent();
        }

        private string FileLoc = null;

        private void AAmain_Load(object sender, EventArgs e)
        {

        }


        private void btnSend_Click(object sender, EventArgs e)
        {
            Stream strm;

            try
            {
                // Test:
                string url = @"https://securep.rsk.is/stadgreidsla/stadgreidslaws/thjonusta.asmx";
                // Life:
                //string url = @"https://secure.rsk.is/stadgreidsla/stadgreidslaws/thjonusta.asmx";

                //proxyStadgreidslaWSE.Stadgreidsla stadgr = new proxyStadgreidslaWSE.Stadgreidsla();
                Stadgr.Stadgreidsla stadgr = new SendaStgrXML.Stadgr.Stadgreidsla();

                OpenFileDialog ofd = new OpenFileDialog();
                ofd.RestoreDirectory = true;

                if (ofd.ShowDialog() != DialogResult.OK)
                {
                    MessageBox.Show("Hætt við");
                    return;
                }

                if ((strm = ofd.OpenFile()) == null)
                {
                    MessageBox.Show("Engin skrá");
                    return;
                }

                Stadgr.Thjonusta thjon = new SendaStgrXML.Stadgr.Thjonusta();
                thjon.Url = url;

                /*  byte[] test = new byte[2000];

                strm.Read(test, 0, 2000);
                MessageBox.Show(ConvertByteArrayToString(test));*/

                XmlSerializer s = new XmlSerializer(typeof(SendaStgrXML.Stadgr.Stadgreidsla),
                    "http://rsk.is/rafraenstadgreidsla/");

                //stadgr = (SendaStgrXML.Stadgr.Stadgreidsla)s.Deserialize(strm);
                strm.Close();

                // This call is for error checking.
                SendaStgrXML.Stadgr.VilluprofaSkilagreinResponseSvarVilluprofun svar = 
                    new SendaStgrXML.Stadgr.VilluprofaSkilagreinResponseSvarVilluprofun();
                svar = thjon.VilluprofaSkilagrein(stadgr);

                // This one is for actual transmission of data:
                SendaStgrXML.Stadgr.SendaSkilagreinResponseSvar svar =
                    new SendaStgrXML.Stadgr.SendaSkilagreinResponseSvar();    
                svar = thjon.SendaSkilagrein(stadgr);

                // Does not apply to you:
                /*SendaStgrXML.Stadgr.SendaSkilagreinLokadArResponseSvar svar =
                    new SendaStgrXML.Stadgr.SendaSkilagreinLokadArResponseSvar();
                svar = thjon.SendaSkilagreinLokadAr(stadgr);*/

                MessageBox.Show(svar.Villubod);

                if (svar.Skilagildi !=-1)
                    MessageBox.Show("Sending tókst");
                else
                    MessageBox.Show("Sending tókst ekki: " +
                                svar.Villubod); 
            }
            catch (Exception er)
            {
                MessageBox.Show(er.ToString());
            }

        }

        public static string ConvertByteArrayToString(byte[] byteArray)
        {
            return (new ASCIIEncoding()).GetString(byteArray);
        }

        private void btnForsendur_Click(object sender, EventArgs e)
        {
            Forsendur fs = new Forsendur();
            fs.Saekja();
        }

        private void btnEldra_Click(object sender, EventArgs e)
        {
            Forsendur fs = new Forsendur();
            fs.Saekja_Eldra();
        }
    }
Run Code Online (Sandbox Code Playgroud)

更新:

我将尝试更详细地描述我的问题,并希望更好.

我今天用Delphi,Delphi 7编写.我有一个相当简单的任务,即实现与Web服务的连接.

主要目标是发送XML文件,然后接收答案(也是XML文件).

我查看了XML数据绑定向导,发现我没有向导的架构文件.停在那里.

我必须声明我不需要任何帮助来解析或编写XML文件,如果我喜欢自己,我可以轻松地构建对象列表.在这种情况下,我不需要.(对我来说,XML只是一个1..n级块的Ascci文件,我已经构建了一个抽象方法来接收这些文件中"第n"个数据的数据属性)

回到问题..

我有ac#代码,但无法弄明白.例如,我没有看到任何类或模式在运行时构建任何对象,也许它只是缺少?

至少.如果有人在这里可以帮助我(在Stack Overflow这个奇妙的地方)如何与这样的WEB服务进行通信,那么我会非常感激.按照我的计划在15日之前完成这项工作,这是冰岛每月纳税日的最后一天.

Ken*_*ite 5

该语言似乎是C#.您可以使用Delphi的XML数据绑定向导(File-> New-> Other-> XML)来导入XML.

如果这实际上是SOAP,您可以使用WSDL导入程序(File-> New-> Other-> WebServices-> WSDL Importer)为您构建类.