在vs.net下写一个webservice,用delphi调用出错.(急呀)

foison 2007-02-27 11:21:15
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
请高手指点一下,看看是什么原因呢.
...全文
387 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
hertcloud 2007-02-27
  • 打赏
  • 举报
回复

http://www.cnblogs.com/mobile/archive/2006/04/27/386274.html

这里有楼主需要的答案.
hertcloud 2007-02-27
  • 打赏
  • 举报
回复
你可以先测试你的webservices
在一个asp.net项目中 能否 顺利的获取值
如果可以那么说明是你的Delphi端程序的问题
foison 2007-02-27
  • 打赏
  • 举报
回复
现在又试了一下,传一个string 类型的参数都不行的.

[WebMethod]
public string revHello(string sName)
{
return sName + " Hello";
}

HTTPRIO1.HTTPWebNode.UseUTF8InHeader:=true;
HTTPRIO1.WSDLLocation:='http://localhost/SealWS/Service.asmx?WSDL';
HTTPRIO1.Service:='Service';
HTTPRIO1.Port:='ServiceSoap';
Edit1.Text:=(HTTPRIO1 as ServiceSoap).revHello('huang feng');
IT_zen 2007-02-27
  • 打赏
  • 举报
回复
不会,学习

12,162

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 Web Services
社区管理员
  • Web Services社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧