起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 374|回复: 15

平台调用XMLHTTP发送XML数据的问题【11楼有新问题】

[复制链接]
发表于 2007-9-11 13:21:27 | 显示全部楼层 |阅读模式
【问题】通过平台在一个函数里调用XMLHTTP(通过IXMLHTTPREQUEST接口的方法)来传递XML数据到外部程序,通过外部程序的网页接收数据,并返回数据。代码如下,程序运行后始终卡在readyState<>4那里,跳过那一块后,返回system err code 998。

请教,问题出在那里,并能给个平台使用XMLHTTP传递XML文件到外部网页或者其他程序并返回信息的例子吗,或者平台上有什么其他的实现相关功能(传递XML到指定网页并返回)的对象或接口?

var
dom:TXMLDocument;
xmlHTTP:IXMLHTTPREQUEST;
begin
     
     dom.LoadFromXML(strXml); {载入XML}  

     xmlHTTP:=IXMLHTTPREQUEST(CoXMLHTTPRequest.Create);

     
     sHttpServer:= 'http://....'; {导入XML文件的地址}

     xmlHTTP.open('POST',sHttpServer,true,'','');{调用:IXMLHTTPREQUEST接口的open方法,True为异步,False为同步 }
     xmlHTTP.send(dom.XML);{调用:IXMLHTTPREQUEST接口的send方法发送XML文件}


     {通过readyState=4确认发送XMl文件结束才执行后面的代码}
     ta:=TApplication.Create(self);
     while xmlHTTP.readyState<>4 do
     begin
        ta.ProcessMessages;
     end;

     {通过xmlHTTP.status}       
     if xmlHTTP.status='200' then
        begin
             returnMsg:=xmlHTTP.responseText;
        end
     else
        begin
          if  xmlHTTP.responseText.Length=0 then
              begin

                   returnMsg:='连接失败!可能原因是服务器错误';
                   result:=false;
                   exit;
              end
          else
              begin
                   MyresponseText:= xmlHTTP.responseText;
                   returnMsg:='链接失败!可能原因是网络未连接或者IIS服务器未启动';
                   result:=false;
                   exit;
              end;
        end;
回复

使用道具 举报

发表于 2007-9-11 14:53:22 | 显示全部楼层
楼主代码能在delphi中执行通吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-9-11 17:45:50 | 显示全部楼层
可以在delphi 中执行通
回复 支持 反对

使用道具 举报

发表于 2007-9-11 17:50:34 | 显示全部楼层
能把delphi的工程文件加PAS,DFM等等文件发过来吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-9-12 13:48:52 | 显示全部楼层
在delphi中测试通过的所有文件在下面的附件里。

XMLdelphi.rar

208.16 KB, 下载次数: 103

回复 支持 反对

使用道具 举报

发表于 2007-9-12 13:58:42 | 显示全部楼层
谢谢,我测试下
回复 支持 反对

使用道具 举报

发表于 2007-9-12 14:05:22 | 显示全部楼层
楼主,你的附件我编译不通。。。
[Error] Unit1.pas(72): '(' expected but '.' found
[Error] Unit1.pas(72): Not enough actual parameters
[Error] Unit1.pas(74): ')' expected but ':=' found
[Error] Unit1.pas(74): Statement expected, but expression of type 'String' found
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-9-12 14:09:54 | 显示全部楼层
==,刚才可能谁改了一下,我重新上传以下
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-9-12 14:12:05 | 显示全部楼层
现在这个应该没有问题了

XMLdelphi.rar

208.1 KB, 下载次数: 116

回复 支持 反对

使用道具 举报

发表于 2007-9-12 14:39:22 | 显示全部楼层
procedure TMainForm.Button2Click(Sender: TObject);
var
  dom:TXMLDocument;
  XMLString:widestring;
  sHttpServer:string;
  xmlHTTP:IXMLHTTPREQUEST;
begin

     xmlHTTP := ComObj.CreateOleObject('Microsoft.XMLHTTP') as IXMLHTTPREQUEST;
     dom:=TXMLDocument.create(Self);
     dom.Active:=true;
     dom.LoadFromFile(edit1.Text);
     XMLString:=dom.XML.Text;
     dom.LoadFromFile(edit1.Text);
     sHttpServer:= 'http://192.168.1.21:8081/test.html';
     xmlHTTP.open('POST',sHttpServer,true,'','');
     xmlHTTP.send(XMLString);
     while xmlHTTP.readyState<>4 do
     begin
         Forms. Application.ProcessMessages;
     end;
     if xmlHTTP.status=200 then
        begin
             returnMsg:=xmlHTTP.responseText;
        end
     else
        begin
          if  xmlHTTP.responseText=''  then
              begin
                   returnMsg:='连接失败!可能原因是服务器错误';
                   memo1.Text := returnMsg;
                   imResult:=false;
                   exit;
              end
          else
              begin
                   returnMsg:='链接失败!可能原因是网络未连接或者IIS服务器未启动';
                   memo1.Text := returnMsg;
                   imResult:=false;
                   exit;
              end;
        end;

   toU8err:=0;
   imResult:=true;
   memo1.Text := returnMsg;
end;
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-1-16 03:43 , Processed in 0.041049 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表