http://www.cnblogs.com/ccqin/archive/2012/08/22/2650348.html

没测试过这个

复制代码
var 
     Source:   TMemoryStream; 
     Response:   TStringStream   ; 
 begin 
 try 
         //   Set   the   properties   for   HTTP 
         idHTTP.Request.Username   :=   'www '; 
         idHTTP.Request.Password   :=   'www '; 
 //         idHTTP1.Request.ProxyServer   :=   '11.133.190.13 '; 
 //         idHTTP1.Request.ProxyPort   :=   StrToIntDef( '80 ',   80); 
         idHTTP.Request.ContentType   :=   'application/x-www-form-urlencoded '; 
           Response   :=   TStringStream.Create( ' '); 
             try 
                     Source   :=   TMemoryStream.Create; 
                     try 
                         Source.LoadFromFile( 'unsub.xml ');   //发送这个XML包,反向取消请求 
                         idHTTP.Post( 'http://222.333.444.555/dsmp/dsmp.wsdl ',   Source,   Response); 
                     finally 
                       //   Source.Free; 
                     end; 

                 memo.Lines.Text   :=   Response.DataString;//返回的字串,可以把它存为XML就可以 
                 memo.Lines.SaveToFile( 'unsubresp.xml ');         //返回的反向取消应答包 
             finally 
                 Response.Free; 
             end; 
     finally 
     end
复制代码

这个方法试了 可以用

以下仅供参考,要求在web页面写特殊的字符,根据返回的结果判断是否登陆成功,用户名,密码方式见下:

复制代码
procedure   TForm1.Button1Click(Sender:   TObject); 
 var 
     Url:   string; 
     Response   :   TStringStream; 
     Request   :   TStrings; 
 begin 
     Memo1.Clear; 
     Response   :=   TStringStream.Create( ' '); 
     try 
         Request   :=   TStringList.Create; 
         try 
             Request.Append( 'txtUserId=hengli&txtPassword=ysj); 
             url   :=   'http://192.168.1.33/nmmis/index.aspx '; 
             IdHTTP1.Request.ContentType   :=   'application/x-www-form-urlencoded '; 
             IdHTTP1.Post(Url,   Request,   Response); 
             Memo1.Lines.Text   :=   Response.DataString; 
         finally 
             FreeAndNil(Request); 
         end; 
     finally 
         FreeAndNil(Response); 
     end; 
 end;
复制代码

通过idhttp上传文件到web上,然后返回上传的文件路径。

复制代码
function   UpLoagFile(FileName:   String):   string; 
 var 
     obj   :   TIdMultiPartFormDataStream; 
     Url:   String; 
 begin 
     obj   :=   TIdMultiPartFormDataStream.Create; 
     try 
         obj.AddFile( 'Image ',FileName,   GetMIMETypeFromFile(FileName)); 
         http.Request.ContentType   :=   obj.RequestContentType; 
         obj.Position   :=   0; 
         Url   :=     'http://192.168.1.44/insertImage.aspx '; 
         Result   :=   http.Post(Url,   obj); 
     finally 
         obj.Free; 
     end; 
 end; 

 服务端,C#: 
 private   void   Page_Load(object   sender,   System.EventArgs   e) 
 { 
         foreach(string   f   in   Request.Files.AllKeys) 
         {   
                 string   fileName,   fullName; 
                 HttpPostedFile   postFile   =   Request.Files[f];   
                 if   (postFile.ContentLength   >   10) 
                 {   
       fileName   =   postFile.FileName; 
       //GetFileName(   fileName,   out   fullName   ); 
       fullName   =   "UpLoad/aaa.jpg " 
       postFile.SaveAs   (   Server.MapPath   (   fullName   )   ); 
       Response.Write   (fullName); 
 } 
         } 
 }
复制代码