delphi中怎么調(diào)用webservice

本篇文章為大家展示了delphi中怎么調(diào)用webservice,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

成都創(chuàng)新互聯(lián)公司提供高防服務器、云服務器、香港服務器、成都機柜租用


1.把WSDL的URL地址放到了HTTPRIO的WSDLLocation參數(shù)中,然后選擇service和port
2.最近一個項目用到了delphi調(diào)用C#寫的web服務的功能。用了一天的時間找原因,終于測試通過了。

這是一個通過web服務把一個照片上傳到網(wǎng)站指定位置的方法。先測試了N次都不成功,通過跟蹤發(fā)現(xiàn)delphi根本沒傳過來任何值,通過查資料發(fā)現(xiàn)VS2005 默認是用的 SoapDocumentProtocol而Delphi 是使用的 SoapRpcProtocol.這會造成所以客戶端傳過去的字符串變成null,需要在生成的接口單元的INITIALIZATION 部分加上一句:InvRegistry.RegisterInvokeOptions(TypeInfo(ServiceSoap), ioDocument);
搞定了。
服務代碼:

[WebMethod]
public int UploadFile(byte[] fs, string FileName)
{
  try
  {
    ///定義并實例化一個內(nèi)存流,以存放提交上來的字節(jié)數(shù)組。
    ///定義實際文件對象,保存上載的文件。
    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);
  //注意這一行,可在程序運行中動態(tài)改變服務地址,以前俺就不知道這個。
  MyWSUpFile:=GetWSUpFileSoap(True,defWSDL,HTTPRIO1);
  //MyWSUpFile:=HTTPRIO1 as WSUpFileSoap;
  try
    try
      case (MyWSUpFile.UploadFile(fs,fileName)) of
        0:MyShowMessage('用戶無權(quán)限');
        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('調(diào)用web服務失?。?#39;);
  end;
end;

上述內(nèi)容就是delphi中怎么調(diào)用webservice,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

分享名稱:delphi中怎么調(diào)用webservice
文章位置:http://muchs.cn/article38/picgpp.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、網(wǎng)站設計公司、移動網(wǎng)站建設、、企業(yè)網(wǎng)站制作微信小程序

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站