请问delphi调用webservice 向服务器传图片有人会吗? 
我现在有个需求,要在delphi中调用webservcie 向java服务器端传图片。
其他webservice接口调用都可以,但一传图片就不行。有哪位朋友给个思路 或demo?

解决方案 »

  1.   

    关键是 服务端不是我写的。通过xml解析出的方法声明如下:
    function  uploadVehPictureToLocalDb(const username: WideString; const picbs: TByteDynArray; const clsbh: WideString): ArrayOf_xsd_string; stdcall; 我该怎么传参数呢?
      

  2.   

    解决了 var
        vByte:TByteDynArray;
        msByte:TMemoryStream;
        iSize:Integer;
        HTTPRIO1:THTTPRIO;
        Iservice : Service1Soap;
    begin
      if Edit2.Text='' then
        begin
          showmessage('没有文件');
          exit;
        end;
      if Edit5.Text='' then
        begin
          showmessage('上传后文件名没有写');
          exit;
        end;    msByte:=TMemoryStream.Create;
        msByte.LoadFromFile(Edit2.Text);
        setlength(vByte,msByte.size);
        msByte.position:=0;
        msByte.read(vByte[0],msByte.size);
        HTTPRIO1:=THTTPRIO.Create(self);
        HTTPRIO1.WSDLLocation := Edit1.Text;
        HTTPRIO1.HTTPWebNode.Agent := 'Borland SOAP 1.2';
        HTTPRIO1.HTTPWebNode.UseUTF8InHeader := true;
        try
            Iservice:= HTTPRIO1 as Service1Soap;
            showmessage(Iservice.UploadFileBytes(vByte,Edit5.Text))
        finally
            Iservice:=nil;
            HTTPRIO1.Free;
            msByte.Free;
        end;
      

  3.   

    楼主,怎么联系?我现在碰到一个问题:用Java开发的服务器我用Delphi调用,老是报错:
    cannot find dispatch method for{null}terminalNo  using "payload Qname-based dispatcher"    
      

  4.   

    用Java开发的服务器我用Delphi调用,调用函数时老是报错:
    cannot find dispatch method for{null}terminalNo  using "payload Qname-based dispatcher"    
    、、
       HTTPRIO1.WSDLLocation := 'http://130.251.9.98:8088/pms/propertyManagementFeeService?wsdl';   HTTPRIO1.Service := 'PropertyManagementFee';
       HTTPRIO1.Port := 'PropertyManagementFeeImplPort';
       HTTPRIO1.HTTPWebNode.UseUTF8InHeader:=True;procedure TForm1.Button1Click(Sender: TObject);
    var
      myWp: PropertyManagementFeeImpl;
      myWS: WideString;
      str0,str1,str2,str3,str4,str5,str6:WideString;  I: Integer;
    begin
      Memo1.Clear;
      myWp := HTTPRIO1 as PropertyManagementFeeImpl;
      str0:='1234';
      str1:='112';
      str2:='212';
      str3:='31';
      str4:='20100801';
      str5:='20100805';
      str6:=‘3333’  
      myWS := mywp.queryFee(str0,str1,str2,str3,str4,str5,str6);
      {for I := Low(myWS) to High(myWS) do
      begin
        Memo1.Lines.Add(myWS[I]);
      end;  }
       Memo1.Lines.Add(myWS);end;
    请问是什么问题??
      

  5.   

    通過以下的聲明的變量去解析xml吧:vByte:TByteDynArray;
      msByte:TMemoryStream;
      iSize:Integer;
      HTTPRIO1:THTTPRIO;
      Iservices : ServicesSoap;
      

  6.   

    刚开始时
    InvRegistry.RegisterInvokeOptions(TypeInfo(TestWebservice), ioLiteral ); ------报错“cannot find dispatch method for{null}terminalNo using "payload Qname-based dispatcher" ”
    然后修改
    InvRegistry.RegisterInvokeOptions(TypeInfo(TestWebservice), ioDocument); ------就是把 ioLiteral 改成 ioDocument,
    现在不报错,可是 服务端收到的参数是null , 这是什么原因呢? 等待高手...
    -------Delphi客户端调用服务端的java webservice 
      

  7.   

    刚才调用成功了,我只是把InvRegistry.RegisterInvokeOptions(TypeInfo(TestWebservice), ioDocument);  注释掉
    或者改成不是ioDocument和ioLiteral   都可以,具体为什么,我现在不知道,还请高手解答一下哈