Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在delphi应用程序中从网站获取XML_Xml_Delphi - Fatal编程技术网

在delphi应用程序中从网站获取XML

在delphi应用程序中从网站获取XML,xml,delphi,Xml,Delphi,我们有一个桌面应用程序(Delphi)。在这个应用程序中,我们通过Shellexecute启动一个网站 客户端在网站上填写表单并单击按钮生成XML 他想要的是在delphi应用程序中接收XML。如何将XML从网站推送到delphi deskptop应用程序。我们不希望用户在pc上保存xml,因为他们不知道explorer是如何工作的 当他点击按钮时,我们如何从网站获取XML 与其在网站上输入表单,不如在应用程序中创建表单供用户填写,然后将该数据发送到网站,然后在HTTP组件的帮助下返回xml 您

我们有一个桌面应用程序(Delphi)。在这个应用程序中,我们通过Shellexecute启动一个网站

客户端在网站上填写表单并单击按钮生成XML

他想要的是在delphi应用程序中接收XML。如何将XML从网站推送到delphi deskptop应用程序。我们不希望用户在pc上保存xml,因为他们不知道explorer是如何工作的


当他点击按钮时,我们如何从网站获取XML

与其在网站上输入表单,不如在应用程序中创建表单供用户填写,然后将该数据发送到网站,然后在HTTP组件的帮助下返回xml

您可以按照以下步骤填写表单参数:

procedure AddFormParam(FormParams: TStringList; const Name, Value: string);
begin
  FormParams.Add(Name + '=' + Value);
end;
例如,如果cgi希望字段名为:Name、Address、Message,则您将填写如下参数:

AddFormParam(FormParams, 'Name', NameValueString);
AddFormParam(FormParams, 'Address', AddressValueString);
AddFormParam(FormParams, 'Message', MessageValueString);
然后将其发送到服务器cgi:

function GetXML(HTTP: TIdHTTP; const FormCgiURL: string; FormParams: TStringList): string;
begin 
  Result := HTTP.Post(FormCgiURL, FormParams);
end;

与其在网站上输入表单,不如在应用程序中创建表单供用户填写,然后将该数据发送到网站,然后在HTTP组件的帮助下返回xml

您可以按照以下步骤填写表单参数:

procedure AddFormParam(FormParams: TStringList; const Name, Value: string);
begin
  FormParams.Add(Name + '=' + Value);
end;
例如,如果cgi希望字段名为:Name、Address、Message,则您将填写如下参数:

AddFormParam(FormParams, 'Name', NameValueString);
AddFormParam(FormParams, 'Address', AddressValueString);
AddFormParam(FormParams, 'Message', MessageValueString);
然后将其发送到服务器cgi:

function GetXML(HTTP: TIdHTTP; const FormCgiURL: string; FormParams: TStringList): string;
begin 
  Result := HTTP.Post(FormCgiURL, FormParams);
end;

最好不要启动外部应用程序。嵌入浏览器。谢谢你们的回复。使用嵌入式浏览器并不是一个解决方案,因为该网站来自另一个客户端,而他的网站则不是;不能在嵌入式浏览器中工作。特拉玛,你能给我一些关于XMLHttp的信息吗?这听起来很假。嵌入式浏览器应该显示任何内容。xml将通过什么机制提供给您?最好不要启动外部应用程序。嵌入浏览器。谢谢你们的回复。使用嵌入式浏览器并不是一个解决方案,因为该网站来自另一个客户端,而他的网站则不是;不能在嵌入式浏览器中工作。特拉玛,你能给我一些关于XMLHttp的信息吗?这听起来很假。嵌入式浏览器应该显示任何内容。xml将通过什么机制提供给您?嗨,Dalija,表单(网站)来自另一家公司。客户端必须在网站上填写表单,我们希望xml返回delphi。当用户单击网站上的提交按钮时,表单数据将发送到web服务器cgi进行处理,cgi将返回您要查找的xml。您可以直接通过应用程序发送cgi期望的表单数据,而不是通过web浏览器触发该过程。但您必须在应用程序中重新创建表单,并且您必须知道表单必须以何种格式(名称=值)发布到服务器。@用户我对您的回答存在的问题是,一方面,您指出此专有网站必须以特定的方式与特定的浏览器一起使用,但你希望我们知道这个神秘的网站是如何运作的。为什么你要问我们而不是网站作者?我想让网站建设者将XML发送到我们的Web服务。从那里我可以从我的delphi应用程序中获取xml。@user3552264:Dalija是对的。您的要求可以通过Indy的
TIdHTTP
或任何其他第三方HTTP组件/库来实现。重要的一点是查看网站的HTML以查看需要提交哪些字段,或者使用数据包嗅探器查看web浏览器传输的内容。然后,您可以直接在代码中复制相同的提交,而无需使用web浏览器。嗨,Dalija,表单(网站)来自另一家公司。客户端必须在网站上填写表单,我们希望xml返回delphi。当用户单击网站上的提交按钮时,表单数据将发送到web服务器cgi进行处理,cgi将返回您要查找的xml。您可以直接通过应用程序发送cgi期望的表单数据,而不是通过web浏览器触发该过程。但您必须在应用程序中重新创建表单,并且您必须知道表单必须以何种格式(名称=值)发布到服务器。@用户我对您的回答存在的问题是,一方面,您指出此专有网站必须以特定的方式与特定的浏览器一起使用,但你希望我们知道这个神秘的网站是如何运作的。为什么你要问我们而不是网站作者?我想让网站建设者将XML发送到我们的Web服务。从那里我可以从我的delphi应用程序中获取xml。@user3552264:Dalija是对的。您的要求可以通过Indy的
TIdHTTP
或任何其他第三方HTTP组件/库来实现。重要的一点是查看网站的HTML以查看需要提交哪些字段,或者使用数据包嗅探器查看web浏览器传输的内容。然后,您可以直接在代码中复制相同的提交,而无需使用web浏览器。