Delphi问题急 xmlhttp

rabbit 2001-09-27 12:56:46
var
strXML: String;
oReq: IXMLHttpRequest;
JsDwDm,DwMc: String;
xmlDom :IXMLDOMDocument;
node: IXMLDOMElement;
nodeList: IXMLDOMNodeList;
begin
CoInitialize(nil );
OleCheck(CoCreateInstance(Class_DOMDocument, nil,CLSCTX_ALL,IXMLDOMDocument,xmlDom));
OleCheck(CoCreateInstance(CLASS_XMLHTTPRequest, nil,CLSCTX_ALL,IXMLHttpRequest, oReq));
oReq.Open('POST', POST_URL + 'select/jsdwdm.asp', False,varEmpty,varEmpty);
oReq.setRequestHeader('Content-Length', IntToStr(Length(strXML)));
oReq.setRequestHeader('CONTENT-TYPE', 'application/x-www-form-urlencoded');
oReq.send(varEmpty);
xmlDom := oReq.responseXML as IXMLDOMDocument;
nodeList := xmlDom.selectNodes('//r');
if nodeList <> nil then
begin
node := nodeList.nextNode as IXMLDOMElement;
while (true) do
begin
if node = nil then
break;
JsDwDm := node.selectSingleNode('dm').Text;
DwMc := node.selectSingleNode('mc').Text;
lstJsDwDm.Items.Add(JsDwDm + '---' + DwMc);
node := nodeList.nextNode as IXMLDOMElement;
end;
end;
xmlDom._Release;
oReq._Release;
CoUninitialize();
end;
过程退出时老是出现CPU调试窗口
...全文
367 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
rabbit 2002-02-05
  • 打赏
  • 举报
回复
RESPONSETEXT,好像可以不要Decode的
记住在Server asp中一定要写明 response.type ..
geyuan 2002-02-04
  • 打赏
  • 举报
回复
ROBBIT
我看了你的代码,解决一个问题,在POST数据时,必须加上XML=
谢谢
但,我现还有一个问题,返回XML,如何进行DECODING ,是对RESPONSETEXT,还是对RESPONEXML进行处理
我的MAIL:GEYUAN@163.NET多联系
rabbit 2001-11-09
  • 打赏
  • 举报
回复
这是我根据VBScript的版本改写而来的 :)
网上一查,你就知道原创始谁了
function URLEncoding(vstrIn: String): String;
var
ThisChr: Char;
i,j: LongWord;
High8,Low8:Integer;
InnerCode: Integer;
begin
Result := '';
i := 1;
j := Length(vstrIn);
while (i<=j) do
begin
ThisChr := vstrIn[i];
if ThisChr = ' ' then
Result := Result + '%20'
else if Abs(Ord(ThisChr)) < 127 then
Result := Result + ThisChr
else begin
innerCode := Ord(ThisChr);
High8 := innerCode and $FF;
Inc(i);
if i <= j then
innerCode := Ord(vstrIn[i]);
Low8 := innerCode and $FF;
Result := Result + '%' + Format('%x',[High8]) + '%' + Format('%x',[Low8]);
end;
Inc(i);
end;
end;
rabbit 2001-11-09
  • 打赏
  • 举报
回复
procedure TFrmZhGs.cmdUpLoadClick(Sender: TObject);
var
pXML: WideString;
strXML: WideString;
oReq: IXMLHTTPRequest;
reMsg :String;
root: IXMLDOMDocument;
node: IXMLDOMNode;
iLength: Integer;
begin
strXML := txtXML.Text;
If strXML = '' Then
Exit;
addLog('上传数据');
pXML := 'xml=' + strXML;
pXML := URLEncoding(pXML);
try
oReq := CoXMLHTTP30.Create;
oReq.Open('POST', POST_URL + 'zhgs.asp', False,varNull,varNull);
iLength := Length(pXML);
oReq.setRequestHeader('Content-Length', IntToStr(iLength));
oReq.setRequestHeader('CONTENT-TYPE', 'application/x-www-form-urlencoded');
oReq.send(pXML);
addLog('上传完毕');

reMsg := '';
reMsg := oReq.responseText;
root := oReq.responseXML As IXMLDOMDocument;
node := root.selectSingleNode('message');
if node <> nil then
begin
reMsg := node.Text;
addLog(reMsg);
end;
finally
oReq := nil;
end;

Application.MessageBox(PChar('回应:'+reMsg),'上传提示',MB_ICONINFORMATION);
end;
xmlingo 2001-11-09
  • 打赏
  • 举报
回复
建议
因为你没有加FORM变量所以没必要设置
oReq.setRequestHeader('CONTENT-TYPE', 'application/x-www-form-urlencoded');
另外如果你要处理oReg返回出错的情况()下面语句
xmlDom := oReq.responseXML as IXMLDOMDocument;
应改为
xmlDom.loadXML(oReq.responseText);
否则会出错网页不存在等

xmlingo 2001-11-09
  • 打赏
  • 举报
回复
建议因为你没有加FORM变量所以没必要设置
oReq.setRequestHeader('CONTENT-TYPE', 'application/x-www-form-urlencoded');
另外如果你要处理oReg返回出错的情况()下面语句应改为
xmlDom := oReq.responseXML as IXMLDOMDocument;
xmlDom.loadXML(oReq.responseText);否则会出错网页不存在等

gao277 2001-10-27
  • 打赏
  • 举报
回复
何所谓需要编码?具体如何实现?!我可以给分!
rabbit 2001-10-27
  • 打赏
  • 举报
回复
当然如果有数据要送给asp
XUYAO编码的。
gao277 2001-10-26
  • 打赏
  • 举报
回复
我有一个问题,你在服务器端收到的xml文档没有乱玛吗?我用的也是同样的方法,但是在服务器端收到的却是乱码,如果xml文档中没有中文就没有问题,可是有中文就有问题,能帮我解决吗?
chassis 2001-10-24
  • 打赏
  • 举报
回复
大富翁上好像见过的...
给分
afeisky 2001-09-28
  • 打赏
  • 举报
回复
不会xml:(
rabbit 2001-09-28
  • 打赏
  • 举报
回复
发现去掉
xmlDom._Release;
oReq._Release;
就没有报错。但是我的数据还是没有出来。
rabbit 2001-09-28
  • 打赏
  • 举报
回复
我得问题总算
被我自己解决了

问题有二:
1。去掉
xmlDom._Release;
oReq._Release;
2。我的ASP生成XML文档,少了 Response.ContentType = "text/xml"
看以下Microsoft XML 4.0 Technology Preview - XML Reference

If the response was generated by an Active Server Pages (ASP) page and the Multipurpose Internet Mail Extension (MIME) type was not correctly set to "text/xml" or "application/xml" using the ASP method Response.ContentType, responseXML will be empty.

希望大家快来拿分,我是个狂人,加了这么多分,还是自己发现问题。
。。。。
rabbit 2001-09-28
  • 打赏
  • 举报
回复
大伙儿,帮帮忙。
rabbit 2001-09-27
  • 打赏
  • 举报
回复
我继续加分 :)
高分悬赏!!
rabbit 2001-09-27
  • 打赏
  • 举报
回复
希望大家多多帮忙!
凯文 2001-09-27
  • 打赏
  • 举报
回复
我想我也不知道
Tense 2001-09-27
  • 打赏
  • 举报
回复
考虑中。
Jneu 2001-09-27
  • 打赏
  • 举报
回复
up
rabbit 2001-09-27
  • 打赏
  • 举报
回复
另外也没有正确的解析XML文档。
我明明有两个<r>节点,都没有循环出来。
直接break了

<?xml version='1.0' encoding='GB2312' ?>
<建设单位><r><dm>JS0001 </dm>
<mc>xxx</mc></r>
<r><dm>JS0002 </dm><mc>上铁建</mc></r></建设单位>

8,906

社区成员

发帖
与我相关
我的任务
社区描述
XML/XSL相关问题讨论专区
社区管理员
  • XML/XSL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧