在vs.net下写一个webservice,用delphi调用出错.(急呀)
c#写的webservice
[WebMethod(Description = "Web 服务提供的方法,返回是否文件上载成功与否。")]
public string zlUploadFile(byte[] fs)
{
string UploadPath = "c:\\UploadPath";
try
{
///定义并实例化一个内存流,以存放提交上来的字节数组。
MemoryStream m = new MemoryStream(fs);
///生成新文件名
Random r = new Random(System.Environment.TickCount); //关键就是随机种子
int rnd = r.Next(2, 99);
string filename = DateTime.Now.ToString("yyyyMMddhhmss") + Convert.ToString(rnd);
string xfilename = ".bmp";
string sfilename = UploadPath + filename + xfilename;//含有路径的新文件名
string sfileurlname = filename + xfilename; //存进数据库的新文件名
///定义实际文件对象,保存上载的文件。
FileStream f = new FileStream(sfilename, FileMode.Create);
///把内内存里的数据写入物理文件
m.WriteTo(f);
m.Close();
f.Close();
f = null;
m = null;
return "文件已经上传成功。";
}
catch (Exception ex)
{
return ex.Message;
}
}
delphi写的客户端
procedure TForm1.Button2Click(Sender: TObject);
var
{filename:string;
x:WideString;
MStream: TMemoryStream;
c: array of TByteDynArray;}
Iservice : ServiceSoap;
filename:string;
vByte:TByteDynArray;
msByte:TMemoryStream;
iSize:Integer;
HTTPRIOX:THTTPRIO;
x:WideString;
begin
if OpenDialog1.Execute then
begin
filename:=OpenDialog1.FileName;
msByte:=TMemoryStream.Create;
msByte.LoadFromFile(filename);
msByte.position:=0;
//msByte.ReadBuffer(vByte[0],msByte.size);
setlength(vByte,msByte.size+1);
msByte.Read(Pointer(vByte)^, msByte.Size);
//move(msByte.Memory^, vByte[0],msByte.size);
//vByte := FileToByteArray(filename);
HTTPRIOX:=THTTPRIO.Create(self);
HTTPRIOX.WSDLLocation:='http://localhost/SealWS/Service.asmx?WSDL';
HTTPRIOX.Service:='Service';
HTTPRIOX.Port:='ServiceSoap';
HTTPRIOX.HTTPWebNode.Agent := 'Borland SOAP 1.2';
HTTPRIOX.HTTPWebNode.UseUTF8InHeader := true;
try
Iservice:= HTTPRIOX as ServiceSoap;
X:= Iservice.zlUploadFile(vByte);
showmessage(X);
finally
Iservice:=nil;
HTTPRIO1.Free;
msByte.Free;
end;
end;
end;
以上代码在vs.net2003下调试通过,可是在vs.net2005下出错.
在服务端不能得到byte[]=null
请高手指点一下,看看是什么原因呢.