需求如下:
1.http请求格式:action=”http://地址和端口号/servlet/IReqServlet?userID=证书ID&PackageID=包ID &SendTime=请求时间”
2.请求数据格式(post方式):Version=版本号 &TransCode=交易代码&reqData=xml请求数据请问用idhttp该如何实现啊?尤其是要传送xml格式的数据?
各项参数和xml文件已经有了.
1.http请求格式:action=”http://地址和端口号/servlet/IReqServlet?userID=证书ID&PackageID=包ID &SendTime=请求时间”
2.请求数据格式(post方式):Version=版本号 &TransCode=交易代码&reqData=xml请求数据请问用idhttp该如何实现啊?尤其是要传送xml格式的数据?
各项参数和xml文件已经有了.
url:string;
xmlHttp:Olevariant;
responseText:Widestring;
yourxmlstring:string;
begin
yourxmlstring:='';//构造你的xml字符串
url:='http://地址和端口号/servlet/IReqServlet?userID=证书ID&PackageID=包ID &SendTime=请求时间';
try
xmlHttp:=CreateOleObject('Msxml2.XMLHTTP');
xmlHttp.open('POST',url,false);
xmlHttp.send(yourxmlstring);
responseText:=xmlHttp.responseText;
if xmlHttp.status='200' then
begin
//Result:=StrToIntDef( Copy( responseText,1,1 ),0 );
showmessage(responseText);//处理你的responseText
end
else
//Result:=0;
showmessage('未正常返回数据');
except
On E:Exception do
//.....异常处理
end;
end;
谢谢回帖。
但我的第2项需求为
2.请求数据格式(post方式):Version=版本号 &TransCode=交易代码&reqData=xml请求数据
并且需要用indy的idhttp控件实现。
代码该怎么写呢?
url:='http://地址和端口号/servlet/IReqServlet?userID=证书ID&PackageID=包ID &SendTime=请求时间';
para:='Version=001&TransCode=q0011&reqData='+myxmlstr;
idhttp.post(url,para);
这样写正确吗?
需求中http请求格式最后“&SendTime=请求时间”后面要不要再加上一个"&"符号呢?
我觉得需求2也是在url后面跟着参数而已,和需求1是一样的,但为什么需求要分“http请求格式”和
“请求数据格式(post方式)”两项来描述呢?
在下愚笨,有劳了。
简单写一下,你测试一下var
PostStream,ResStream:TStringStream;
URL:string;
para:string;
myxmlstr:string;
begin
myxmlstr:='...';
URL:='http://地址和端口号/servlet/IReqServlet?userID=证书ID&PackageID=包ID &SendTime=请求时间';
para:='Version=001&TransCode=q0011&reqData='+myxmlstr;
PostStream:=TStringStream.Create('');
PostStream.WriteString(para);
ResStream:=TStringStream.Create('');
try
IdHTTP1.Post(URL,PostStream,ResStream);
showmessage(ResStream.DataString);
finally
PostStream.Free;
ResStream.Free;
end;
end;