+ -
当前位置:首页 → 问答吧 → ★☆★☆★☆★急手问题,请高手详细指教!!感激不尽!!

★☆★☆★☆★急手问题,请高手详细指教!!感激不尽!!

时间:2011-12-21

来源:互联网

是这样的,我要遍历一个文件夹,,里面全是文本内容的文件,把里面所有的文本文件逐个发送到服务端去,他们提供给我的服务端接口如下:
 接口访问地址:
http://192.168.0.1/VAService.asmx?hhds

 上传的函数调用说明:
string writeSurveil(string code, string txtDoc)

  返回:String
  参数:code 默认为‘aa’。
  txtDoc 为要上传的txt文件。

提供接口返回参数标准:
  <code>1</code>成功,其他为异常;
  <message>数据上传成功 </message>异常报错信息通过此参数传出。

求高手赐教,详细赐教,请大伙帮忙,感激不尽!!!!!

作者: zhouziqiang   发布时间: 2011-12-21

先自己尝试着去做,如果还是弄不明白,谁提供的接口,你就问谁

作者: bdmh   发布时间: 2011-12-21

搜索文件用TSearchRec,其它自己研究吧

作者: kaikai_kk   发布时间: 2011-12-21

1)遍历文件夹搜索,提取文件
2)上传的应该是调用webservice服务。
  delphi调用这个也方便,添加wsdl的引用就ok

作者: ksrsoft   发布时间: 2011-12-21

该回复于2011-12-21 11:55:21被管理员删除

  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
#5楼 得分:0回复于:2011-12-21 11:21:00
1、如果需要有接口,有可能涉及到跨语言的,最好不要用string类型来做参数;
2、你应该主要找接口提供方啊。

作者: lovemoon714   发布时间: 2011-12-21

一看WEB服务就是.NET写的,用DELPHI调用,很好弄的。
1、打开DELPHI,新建(New)->其他(Other)->WebServices->WSDL Importer
2、在出现的对话框把 http://192.168.0.1/VAService.asmx?WSDL 粘贴进去!(注意必须要有WSDL)
3、在DLEPHI中会生成一个单元大概如下:
  unit FPWebServiceAPI;

interface

uses InvokeRegistry, SOAPHTTPClient, Types, XSBuiltIns;

type

  // ************************************************************************ //
  // The following types, referred to in the WSDL document are not being represented
  // in this file. They are either aliases[@] of other types represented or were referred
  // to but never[!] declared in the document. The types from the latter category
  // typically map to predefined/known XML or Borland types; however, they could also 
  // indicate incorrect WSDL documents that failed to declare or import a schema type.
  // ************************************************************************ //
  // !:string - "http://www.w3.org/2001/XMLSchema"
  //服务头,其实就是一个调用服务的用户名密码,如果对方没有设置,则这个没有!
  ServerHeader = class; { "fdsafds"[H] }
  //返回类,如果对方没有设置也没有,(可能返回值直接由函数返回一个整型值)
  fdsa_Result = class; { "fdsafds" }



  // ************************************************************************ //
  // Namespace : CRM.WebSev
  // ************************************************************************ //
  //表头类(可以没有)
  ServerHeader = class(TSOAPHeader)
  private
  Header1: WideString;
  published
  property Header1: WideString read FHeader1 write FHeader1;
  end;
  //注意这个带Soap的东西,他很重要
  VAServiceSoap = interface(IInvokable)
  ['{09D83DCC-E14F-35AE-3412-9090246E387B}']
  //注意这里就是你要调用的函数了
  writeSurveil(const code:wideString,cont txtDoc:widestring):返回值;
 end;

function GetVAServiceSoap(UseWSDL: Boolean=System.False; Addr: string=''; HTTPRIO: THTTPRIO = nil): VAServiceSoap ;


implementation

function GetVAServiceSoap(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): GetVAServiceSoap;
const
  defWSDL = 'http://localhost:2071/VAService.asmx?WSDL';
  defURL = 'http://localhost:2071/VAService.asmx;
  defSvc = 'VAServiceAPI';
  defPrt = 'VAServiceSoap';
var
  RIO: THTTPRIO;
begin
  Result := nil;
  if (Addr = '') then
  begin
  if UseWSDL then
  Addr := defWSDL
  else
  Addr := defURL;
  end;
  if HTTPRIO = nil then
  RIO := THTTPRIO.Create(nil)
  else
  RIO := HTTPRIO;
  try
  Result := (RIO as 'VAServiceSoap');
  if UseWSDL then
  begin
  RIO.WSDLLocation := Addr;
  RIO.Service := defSvc;
  RIO.Port := defPrt;
  end else
  RIO.URL := Addr;
  finally
  if (Result = nil) and (HTTPRIO = nil) then
  RIO.Free;
  end;
end;


initialization
  InvRegistry.RegisterInterface(TypeInfo('VAServiceSoap'), 'CRM.WebSev', 'utf-8');
  InvRegistry.RegisterDefaultSOAPAction(TypeInfo('VAServiceSoap'), 'CRM.WebSev/%operationName%');
  InvRegistry.RegisterHeaderClass(TypeInfo('VAServiceSoap'), ServerHeader, 'ServerHeader', '');
  InvRegistry.RegisterInvokeOptions(TypeInfo('VAServiceSoap'), ioDocument);
  RemClassRegistry.RegisterXSClass(ServerHeader, 'CRM.WebSev', 'ServerHeader');
  RemClassRegistry.RegisterXSClass(HDSoftWareAPI_Result, 'CRM.WebSev', 'HDSoftWareAPI_Result');

end. 

4、调用
  //定义
  HTTPRIO: THTTPRIO; //代理服务对象
  FSoap:VAServiceSoap ; //WebService服务对象
  Header: ISOAPHeaders; //web服务的报头代理(如果没有表头,这个可以不定义)
  FServiceHeader:ServerHeader; //web服务的报头对象(如果没有表头,这个可以不定义)

  //实例化
  HTTPRIO := THTTPRIO.Create(nil);
  FSoap := (HTTPRIO as HDCompanyServiceAPISoap);
  //表头,如果没有以下可以不用
  FServiceHeader:=ServerHeader.Create;
  FServiceHeader.表头字符串 := 'fdsafdsa';
  Header:=(FSoap as ISOAPHeaders);

  //调用服务
  //如果有表头,先发送表头
  Header.Send(FServiceHeader);
  //调用函数(就像调用本地函数一样
  FSoaq.writeSurveil(code,文件名);
 
 //记得释放资源
  if HTTPRIO<>nil then
  HTTPRIO:=nil;
  if FSoap<>nil then
  FSoap := nil;
  if FServiceHeader<>nil then
  FServiceHeader.Free;
  if Header<>nil then
  Header:=nil;

作者: jubobo   发布时间: 2011-12-21

检索文件 我会,可是就是不会怎么传,之前没接触过,求个样例 多谢!!!

作者: nm_wyh   发布时间: 2011-12-21