文档章节

delphi调用C#写的web服务例子

vga
 vga
发布于 2017/09/07 06:38
字数 480
阅读 28
收藏 0

#程序员薪资揭榜#你做程序员几年了?月薪多少?发量还在么?>>>

delphi调用C#写的web服务例子-----------(重点 InvRegistry.RegisterInvokeOptions(TypeInfo(ServiceSoap), ioDocument);)
http://blog.csdn.net/xcplates/archive/2009/11/29/4900036.aspx

最近一个项目用到了delphi调用C#写的web服务的功能。用了一天的时间找原因,终于测试通过了。

这是一个通过web服务把一个照片上传到网站指定位置的方法。先测试了N次都不成功,通过跟踪发现delphi根本没传过来任何值,通过查资料发现VS2005 默认是用的 SoapDocumentProtocol而Delphi 是使用的 SoapRpcProtocol.这会造成所以客户端传过去的字符串变

成null,需要在生成的接口单元的INITIALIZATION 部分加上一句:InvRegistry.RegisterInvokeOptions(TypeInfo(ServiceSoap), ioDocument);
搞定了。
服务代码:

    [WebMethod]
    public int UploadFile(byte[] fs, string FileName)
    {
        try
        {
            ///定义并实例化一个内存流,以存放提交上来的字节数组。
            ///定义实际文件对象,保存上载的文件。
            string FullFilename = Server.MapPath("photo\\") +  FileName;
            if (File.Exists(FullFilename)) { File.Delete(FullFilename); }
            FileStream f = new FileStream(FullFilename, FileMode.Create, FileAccess.Write);
            f.Write(fs, 0, fs.Length);
            f.Close();
            f = null;
            return 1;
        }
        catch 
        {
            return 2;
        }
    }
delphi客户端代码:

procedure TFrmUpLoad.btn2Click(Sender: TObject);
   function ReadFile(fileName:string): TByteDynArray;
   var
      fs:TFileStream;
     iSize:Int64;
   begin
     try
        fs:=TFileStream.Create(fileName,fmOpenRead);
        iSize:=fs.Seek(0,soFromEnd);
        SetLength(Result,iSize);
        fs.Seek(0,soFromBeginning);
        fs.ReadBuffer(Result[0],iSize);
     finally
        fs.Free;
     end;
   end;
var
  defWSDL,
  defURL,
  defSvc ,
  defPrt :string;
  MyWSUpFile:WSUpFileSoap;
  fs: TByteDynArray;
  fileName:string;
begin
  fs:=ReadFile(edt1.Text);
  defWSDL := 'http://'+sysinfo.WZ+'/wsupfile.asmx?wsdl';
  defURL  := 'http://'+sysinfo.WZ+'/wsupfile.asmx';
  defSvc  := 'WSUpFile';
  defPrt  := 'WSUpFileSoap';
  HTTPRIO1.WSDLLocation:=defWSDL;
  HTTPRIO1.Port:=defPrt;
  HTTPRIO1.URL:=defURL;
  HTTPRIO1.Service:=defSvc;
  HTTPRIO1.HTTPWebNode.UseUTF8InHeader:=true;
  fileName:=HYBH+ExtractFileExt(edt1.Text);
 //注意这一行,可在程序运行中动态改变服务地址,以前俺就不知道这个。

  MyWSUpFile:=GetWSUpFileSoap(True,defWSDL,HTTPRIO1);
  //MyWSUpFile:=HTTPRIO1 as WSUpFileSoap;
  try
    try
     case (MyWSUpFile.UploadFile(fs,fileName)) of
        0:MyShowMessage('用户无权限');
        1:begin
           FrmHYGL.ADOQuery1.Edit;
           FrmHYGL.ADOQuery1.FieldByName('ZP').AsString:=fileName;
           FrmHYGL.ADOQuery1.Post;
           MyShowMessage('上传成功');
          end;
        2:MyShowMessage('上传失败');
      end;
    finally
      MyWSUpFile:=nil;
    end;
  except
    MyShowMessage('调用web服务失败!');
  end;
end;


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/xcplates/archive/2009/11/29/4900036.aspx

本文转载自:http://blog.csdn.net/xcplates/article/details/4900036

vga

vga

粉丝 24
博文 373
码字总数 26966
作品 0
佳木斯
私信 提问
加载中

评论(0)

Delphi调用 C# 写的webservice

Delphi调用 C# webservice总结 用delphi的THTTPRIO控件调用了c#写的webservice。 下面是我调试时遇到的一些问题: 1:导入wsdl文件:file--new----other----webservice---WSDLimporter---输入...

vga
2014/11/25
513
0
(转)Delphi 调用C#编写的WebService 参数为Null解决方法 附中文乱码问题

(转)Delphi 调用C#编写的WebService参数为Null解决方法 附中文乱码问题 //add-------to support UTF-8 RIO.HTTPWebNode.UseUTF8InHeader:= true; //添加该行,指定采用UTF-8代码传输 RIO....

vga
2015/02/13
1.4K
1
用delphi的THTTPRIO控件调用c#写的webservice。

用delphi的THTTPRIO控件调用c#写的webservice 下面是我调试时遇到的一些问题: 1,导入wsdl文件:file--new----other----wenservice---WSDLimporter---输入wsdl地址:如下:http://10.0.1.128:...

vga
2014/11/25
989
3
golang语言中的math库中效率低下,可能是类型转换花费了大量时间?

今天写了个加密的东西,用到了math.Sqrt求质数,发现用的时间很久,先不管下面的例子算法是否有问题,我就写了个demo寻找10 000 000以内的质数个数,原本这个demo是delphi写的,我把它翻译成...

大洋的顶端
2017/10/26
736
14
tms web core 与 kbmmw 第一次亲密接触

最近,tms 经过1年多,集合了数十名高手大牛,开发出了一个跨时代的产品,就是tms web core. 具体的介绍详见官网,https://www.tmssoftware.com/site/tmswebcore.asp。 这个产品可以把pasca...

osc_dgr0xrq4
2018/07/29
7
0

没有更多内容

加载失败,请刷新页面

加载更多

比较好用的自媒体分发工具是哪个?

正是源于互联网生态的健康发展,从15年开始到现在,自媒体文化产业特别有关注度,其品牌形象鲜明、优秀的转化能力的数不胜数的亮点,故而吸引着数不清的创作者,而为了达到更出彩的播放量,这...

易媒助手
22分钟前
38
0
idea2020.1 pojie

前几天最新版的idea2020.1终于发布了,它有多香相信小伙伴们已经有所耳闻。现在就拿出来分享给小伙伴们。   所需要的的东西放在这里了,同时里面也放了一个idea2020.1,小伙伴可以选择性的...

我喜欢你有用吗__
26分钟前
32
0
从企业微信机器人到小爱同学,用 Serverless 实现生活智能化!

通过定时触发器,可以简单快速地定制一个企业微信机器人。我们可以用它来实现喝水、吃饭提醒等小功能,还能实现定时推送新闻、天气,甚至是监控告警的小功能。 使用企业微信机器人 在企业微信...

腾讯云Serverless
29分钟前
32
0
socket编程基础,从了解到实现

java生下来一开始就是为了计算机之间的通信,因此这篇文章也将开始介绍一下java使用socket进行计算机之间的通信,在上一篇文章中已经对网络通信方面的基础知识进行了总结,这篇文章将通过代码...

虹越云霄
30分钟前
41
0
Spring Enable***功能

spring博大精深,衍生出了两大系列:spring boot 和sping cloud快速业务开发模式。 我们进行具体开发时,经常看到这样以Enable*开头的注解,如图 等等好多例子。。。框架自带的Enable* @En...

董广明
32分钟前
41
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部