Delphi调用WebServices(C#)代码

None.gif using  System;
None.gif
using  System.Web;
None.gif
using  System.Web.Services;
None.gif
using  System.Web.Services.Protocols;
None.gif
None.gif
using  System.Data;
None.gif
using  System.Data.OracleClient;
None.gif
using  System.IO;
None.gif
None.gif
using  System.IO.Compression;
None.gif
using  System.Runtime.Serialization.Formatters.Binary;
None.gif[WebServiceBinding(ConformsTo 
=  WsiProfiles.BasicProfile1_1)]
None.gif
public   class  Service : System.Web.Services.WebService
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif    
private OracleConnection webConnection;
InBlock.gif    DataTable curDt 
= new DataTable();
InBlock.gif    DataSet curSet 
= new DataSet();
InBlock.gif    OracleDataAdapter curDa 
= new OracleDataAdapter();
InBlock.gif    OracleCommand curComm 
= new OracleCommand();
InBlock.gif
InBlock.gif    
private string GetCurCnnStr()
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        
//连接数据库并打开
InBlock.gif
        OracleConnectionStringBuilder cnnStrBuilder = new OracleConnectionStringBuilder();
InBlock.gif        cnnStrBuilder.UserID 
= "";
InBlock.gif        cnnStrBuilder.Password 
= "";
InBlock.gif        cnnStrBuilder.DataSource 
= "";
InBlock.gif        
return cnnStrBuilder.ConnectionString;
ExpandedSubBlockEnd.gif    }

InBlock.gif    
public Service()
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif
InBlock.gif        
//如果使用设计的组件,请取消注释以下行 
InBlock.gif        
//InitializeComponent(); 
ExpandedSubBlockEnd.gif
    }

InBlock.gif
InBlock.gif    [WebMethod(Description 
= "判断空值")]
InBlock.gif    
private OracleParameter CreateParam(string ParamName, object ParamValue)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        OracleParameter Result 
= new OracleParameter();
InBlock.gif        Result.ParameterName 
= ParamName;
InBlock.gif        
if (ParamValue != null)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            Result.Value 
= ParamValue;
ExpandedSubBlockEnd.gif        }

InBlock.gif        
else
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            Result.Value 
= DBNull.Value;
ExpandedSubBlockEnd.gif        }

InBlock.gif
InBlock.gif        
return Result;
ExpandedSubBlockEnd.gif    }

InBlock.gif
InBlock.gif    [WebMethod(Description 
= "测试连接")]
InBlock.gif    
public string Linking()
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        
return "WebService连接成功!";
ExpandedSubBlockEnd.gif    }

InBlock.gif
InBlock.gif
InBlock.gif    [WebMethod(Description 
= "查询信息")]
InBlock.gif    
public byte[] Search(string img)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        
try
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            webConnection 
= new OracleConnection(GetCurCnnStr());
InBlock.gif            webConnection.Open();
InBlock.gif            
//查询表中的所有的数据
InBlock.gif
            OracleDataAdapter webAdapter = new OracleDataAdapter("select pic from pic where id=" + img, webConnection);
InBlock.gif            DataSet webDataTable 
= new DataSet();
InBlock.gif            
//byte[] webDataTable = new byte[0];
InBlock.gif
            webAdapter.Fill(webDataTable);
InBlock.gif            webConnection.Close();
InBlock.gif
InBlock.gif            
//序列化为二进制
InBlock.gif
            webDataTable.RemotingFormat = SerializationFormat.Binary;//确定序列化格式
InBlock.gif
            BinaryFormatter bFormatter = new BinaryFormatter();
InBlock.gif            MemoryStream mStream 
= new MemoryStream();
InBlock.gif            bFormatter.Serialize(mStream, webDataTable);
InBlock.gif            
byte[] bytes = mStream.ToArray();//将数据流写入字节数组
InBlock.gif            
//返回数组 
InBlock.gif
            return bytes;
InBlock.gif
ExpandedSubBlockEnd.gif        }

InBlock.gif        
catch (Exception)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            curComm.Transaction.Rollback();
InBlock.gif            
return null;
ExpandedSubBlockEnd.gif        }

InBlock.gif        
finally
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
InBlock.gif            webConnection.Close();
ExpandedSubBlockEnd.gif        }

InBlock.gif     
ExpandedSubBlockEnd.gif    }

InBlock.gif
InBlock.gif    [WebMethod(Description 
= "添加信息")]
InBlock.gif    
public void Add(string id, byte[] Image)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        
try
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            webConnection 
= new OracleConnection(GetCurCnnStr());
InBlock.gif            curComm.Connection 
= webConnection;
InBlock.gif            webConnection.Open();
InBlock.gif            curComm.Transaction 
= webConnection.BeginTransaction();
InBlock.gif            curComm.CommandText 
= "insert into pic(id,pic)values(:pId,:pPic)";
InBlock.gif            curComm.Parameters.Add(CreateParam(
"pId", (id != null? id : null));
InBlock.gif            curComm.Parameters.Add(CreateParam(
"pPic", (Image != null? Image : null));
InBlock.gif
InBlock.gif            curComm.ExecuteNonQuery();
InBlock.gif            curComm.Transaction.Commit();
InBlock.gif
InBlock.gif
ExpandedSubBlockEnd.gif        }

InBlock.gif        
catch (Exception)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            curComm.Transaction.Rollback();
ExpandedSubBlockEnd.gif        }

InBlock.gif        
finally
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            webConnection.Close();
ExpandedSubBlockEnd.gif        }

ExpandedSubBlockEnd.gif    }

InBlock.gif
InBlock.gif   
InBlock.gif    
ExpandedBlockEnd.gif}
以上为webservice客户端代码;下面是delphi代码:

None.gif unit Unit1;
None.gif
None.gifinterface
None.gif
None.gifuses
None.gif  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
None.gif  Dialogs, InvokeRegistry, Rio, SOAPHTTPClient, ExtCtrls, StdCtrls,
None.gif  Service,types,jpeg,StrUtils, Buttons;
None.gif  
// StrUtils:取指定字符
None.gif  {QDialogs:在delphi6及以后的版本中,
None.gif  为了支持kylix,能使程序在linux下运行
None.gif  每一个单元都增加了对应的QDialogs单元
None.gif  如果你用了带Q的单元,哪么如果你的程序
None.gif  要想在Windows中正常运行必须得有qtintf.dll
None.gif  的支持你可以搜索一个,把程序中uses中的
None.gif  单元前有Q的把Q去掉就ok了!   }
None.gif
None.giftype
None.gif  TForm1 
=  class(TForm)
None.gif    Label1: TLabel;
None.gif    Edit1: TEdit;
None.gif    Panel1: TPanel;
None.gif    Image1: TImage;
None.gif    HTTPRIO1: THTTPRIO;
None.gif    
Open : TOpenDialog;
None.gif    Search: TButton;
None.gif    
Add : TButton;
None.gif    
Update : TButton;
None.gif    
Delete : TButton;
None.gif    Panel2: TPanel;
None.gif    Image2: TImage;
None.gif    Label2: TLabel;
None.gif    
procedure  SearchClick(Sender: TObject);
None.gif    
procedure  FormShow(Sender: TObject);
None.gif    
procedure  Image2Click(Sender: TObject);
None.gif    
procedure  Edit1KeyPress(Sender: TObject;  var   Key Char );
None.gif    
procedure  Image1Click(Sender: TObject);
None.gif    
procedure  AddClick(Sender: TObject);
None.gif    
procedure  DeleteClick(Sender: TObject);
None.gif    
procedure  UpdateClick(Sender: TObject);
None.gif
None.gif  private
None.gif    { Private declarations }
None.gif  
public
None.gif    { 
Public  declarations }
None.gif  
end ;
None.gif
None.gif
var
None.gif  Form1: TForm1;
None.gif  files:TFileStream;
None.gif  ms:TMemoryStream;
None.gif  jpg:TjpegImage;
None.gif  s:TByteDynArray;
None.gif  path:WideString;
None.gifimplementation
None.gif
None.gif{$R 
* .dfm}
None.gif
None.gif
procedure  TForm1.SearchClick(Sender: TObject);
None.gif
var
None.gif  bmTemp:TjpegImage;
// TBitmap;
None.gif  Web_Search:ServiceSoap;
None.gif
begin
None.gif     bmTemp:
= TjpegImage. Create ;
None.gif      
// 创建流
None.gif      ms:
= TMemoryStream. Create ;
None.gif    Web_Search:
= HTTPRIO1  as  ServiceSoap;
None.gif   try
None.gif      
if  (edit1. Text <> '' then
None.gif          
begin
None.gif             
// 调用服务查询功能
None.gif              s:
= (Web_Search.Search(edit1. Text ));
None.gif              
if (length(s) < 6229 )   then
None.gif                  
begin
None.gif                     showmessage(
' 没有图片,请重输 ' );
None.gif                     image1.Picture.Assign(nil);
None.gif                  
end
None.gif              
else
None.gif                  
begin
None.gif                     
// 从图片开始位置读取
None.gif                     ms.Write(s
[ 6229 ] ,length(s));
None.gif                     ms.Position:
= 0 ;
None.gif                     
// 加载流
None.gif                     bmTemp.LoadFromStream(ms);
None.gif                      
// 输出
None.gif                     image1.Picture.Assign(bmTemp);
None.gif                  
end ;
None.gif
None.gif            
end
None.gif       
else
None.gif          
begin
None.gif              showmessage(
' 缺少查询条件! ' );
None.gif              image1.Picture.Assign(nil);
None.gif              edit1.SetFocus;
None.gif          
end ;
None.gif   finally
None.gif       
// 释放空间
None.gif       ms.Free;
None.gif       bmTemp.Free;
None.gif       
// 控制
None.gif       
// edit1.Clear;
None.gif       edit1.SetFocus;
None.gif    
end ;
None.gif
None.gif 
end ;
None.gif
procedure  TForm1.FormShow(Sender: TObject);
None.gif
var
None.gif    fstyle: dWord;
None.gif
begin
None.gif     
// 控制edit只输入数字
None.gif     fstyle :
=  GetWindowLong(Edit1.Handle, GWL_STYLE);
None.gif     SetWindowLong(Edit1.Handle, GWL_STYLE, fstyle 
or  ES_NUMBER);
None.gif      
// 指定图片格式
None.gif     edit1.SetFocus;
None.gif     
None.gif
end ;
None.gif
None.gif
procedure  TForm1.Image2Click(Sender: TObject);
None.gif
var
None.gif Web_link:ServiceSoap;
None.gif
begin
None.gif  
// 测试连接
None.gif   Web_link:
= HTTPRIO1  as  ServiceSoap;
None.gif   showmessage(
'' + Web_link.Linking + '' );
None.gif
end ;
None.gif
None.gif
procedure  TForm1.Edit1KeyPress(Sender: TObject;  var   Key Char );
None.gif
begin
None.gif   
// 输入控制
None.gif   
if   key = # 13   then
None.gif   Search.Click;
None.gif
end ;
None.gif
None.gif
procedure  TForm1.Image1Click(Sender: TObject);
None.gif
var
None.gif  testpath:string;
None.gif  testname:string;
None.gif
begin
None.gif  ms:
= TMemoryStream. Create ;
None.gif  jpg:
= TjpegImage. Create ;
None.gif  
if   Open . Execute   then
None.gif     
begin
None.gif       testpath:
= ExtractFileName( open .FileName);
None.gif       testname:
= RightStr(testpath, 4 );
None.gif       
if  (testname = ' .jpg ' ) or ( testname = ' .JPG ' or ( testname = ' .jpeg ' ) or ( testname = ' .JPEG ' ) then
None.gif           
begin
None.gif              path:
= ExtractFileDir( open .FileName) + ' \ ' + ExtractFileName( open .FileName);
None.gif              files:
=  TFileStream. Create ( open .FileName,fmShareDenyWrite);
None.gif              try
None.gif                  jpg.LoadFromStream(files);
None.gif                  jpg.SaveToStream(ms);
None.gif                  image1.Picture.Assign(jpg);
None.gif              finally
None.gif                  files.Free;
None.gif               
end ;
None.gif            
end
None.gif        
else
None.gif        showmessage(
' 当前默认为JPEG类型图片 ' );
None.gif    
end ;
None.gif
end ;
None.gif
end .
None.gif


 

转载于:https://www.cnblogs.com/support/archive/2007/04/27/729158.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值