需求如下:
1.http请求格式:action=”http://地址和端口号/servlet/IReqServlet?userID=证书ID&PackageID=包ID &SendTime=请求时间”
2.请求数据格式(post方式):Version=版本号 &TransCode=交易代码&reqData=xml请求数据请问用idhttp该如何实现啊?尤其是要传送xml格式的数据?
各项参数和xml文件已经有了.

解决方案 »

  1.   

    uses comobj;var
      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.   

    To hongqi162:
    谢谢回帖。
    但我的第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方式)”两项来描述呢?
    在下愚笨,有劳了。 
      

  3.   


    简单写一下,你测试一下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;