我有一些(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日之前完成这项工作,这是冰岛每月纳税日的最后一天.
该语言似乎是C#.您可以使用Delphi的XML数据绑定向导(File-> New-> Other-> XML)来导入XML.
如果这实际上是SOAP,您可以使用WSDL导入程序(File-> New-> Other-> WebServices-> WSDL Importer)为您构建类.
| 归档时间: |
|
| 查看次数: |
1041 次 |
| 最近记录: |