誉天Cisco、Linux、Oracle认证论坛[武汉CCNA.CCNP.CCIE.RHCE.RHCA.Oracle.OCP培训]'s Archiver

markhappy 发表于 2005-9-17 11:45

Java网络编程之URI、URL研究专题一

URI、URL和URN是识别、定位和命名互联网上的资源的标准途径。本文分析了URI、URL和URN和Java API的URI和URL类(以及与URL相关的类),并演示了如何在程序中使用这些类。<BR>  <BR>  1989年Tim Berners-Lee发明了互联网(World Wide Web)。WWW被认为是全球互连的实际的和抽象的资源的集合--它按需求提供信息实体--通过互联网访问。实际的资源的范围从文件到人,抽象的资源包括数据库查询。<BR>  <BR>  因为要通过多样的方式识别资源(人的名字可能相同,然而计算机文件只能通过唯一的路径名称组合访问),所以需要标准的识别WWW资源的途径。为了满足这种需要,Tim Berners-Lee引入了标准的识别、定位和命名的途径:URI、URL和URN。<BR>  <BR>  <B>URI、URL和URN是什么?</B><BR>  <BR>  体系中的URI、URL和URN是彼此关联的。URI的范畴位于体系的顶层,URL和URN的范畴位于体系的底层。这种排列显示URL和URN都是URI的子范畴,如图1所示:<BR>  
<CENTER><IMG src="http://chinaitlab.com/www/imgfiles/2005.9.15.9.54.20.5.1.jpg"></CENTER><BR>  图1:URI、URL和URN之间的层次关系。URL和URN是URI的子范畴<BR>  <BR>  URI表示的是统一的资源标识,它是以某种统一的(标准化的)方式标识资源的简单字符串。典型情况下,这种字符串以scheme(命名URI的名字空间的标识符--一组相关的名称)开头,语法如下:<BR>  <BR>  [scheme:] scheme-specific-part<BR>  <BR>  URI以scheme和冒号开头。Scheme用大写/小写字母开头,后面为空或者跟着更多的大写/小写字母、数字、加号、减号和点号。冒号把scheme与scheme-specific-part分开了,并且scheme-specific-part的语法和语义(意思)由URI的名字空间决定。<BR>  <BR>  其中一个例子是http://www.cnn.com,其中http是scheme,//http://www.cnn.com是 scheme-specific-part,并且它的scheme与scheme-specific-part被冒号分开了。<BR>  <BR>  我们可以把URI按照绝对的或相对的分类。绝对的URI指以scheme(后面跟着冒号)开头的URI。前面提到的http://www.cnn.com就是绝对的URI的一个例子,其它的例子还有mailtjeff@javajeff.com、news:comp.lang.java.help和xyz://whatever。你可以把绝对的URI看作是以某种方式引用某种资源,而这种方式对标识符出现的环境没有依赖。<BR>  <BR>  如果使用文件系统作类比,绝对的URI类似于从根目录开始的某个文件的路径。与绝对的URI不同的,相对的URI不是以scheme(后面跟着冒号)开始的URI。<BR>  <BR>  它的一个例子是articles/articles.html。你可以把相对的URI看作是以某种方式引用某种资源,而这种方式依赖于标识符出现的环境。如果用文件系统作类比,相对的URI类似于从当前目录开始的文件路径。<BR>  <BR>  URI可以进一步分为不透明的和分层的两类。不透明的URI指scheme-specific-part不是以正斜杠(/)开头的绝对的URI。<BR>  <BR>  其例子有news:comp.lang.java和前面的mailtjeff@javajeff.com。不透明的URI并不是用于分解的(超出了识别scheme的范畴),因为不需要验证scheme-specific-part的有效性。与它不同的是,分层的URI可以是以正斜杠开头的绝对的URI或相对的URL。<BR>  <BR>  与不透明的URI不同,分层的URI的scheme-specific-part必须被分解为几个组成部分。这些组成部分是什么?分层的URI标识组件的普通子集的scheme-specific-part符合下面的语法:<BR>  <BR>  [//authority] [path] [?query] [#fragment]<BR>  <BR>  可选的authority组件标识了该URI名字空间的命名机构。如果有这一部分,它就是以一对正斜杠开始的,它可以是基于服务器或基于注册的,并且它以后面的正斜杠、问号或没有其它符号结束。基于注册的授权机构组件有特定大纲的语法(本文没有讨论,因为很少使用它),而基于服务器的授权机构组件的语法如下:<BR>  <BR>  [userinfo@] host [:port]<BR>  <BR>  按照这种语法,基于服务器的授权机构组件可以随意的以用户信息(例如用户名)开始,后面跟着一个@符号,紧接着是主机的名称,以及冒号和端口号。例如jeff@x.com:90就是一个基于服务器的授权机构组件,其中jeff包含了用户信息,x.com包含了主机,90包含了端口。<BR>  <BR>  可选的path组件根据授权机构组件(如果提供了)或大纲(如果没有授权机构组件)识别资源的定位(或位置)。路径(path)可以分成一系列的路径片断(path segment),每个路径片断使用正斜杠与其它的路径片断隔开。<BR>  <BR>  如果路径的第一个路径片断以一个正斜杠开始,该路径就被认为是绝对的。否则路径就被认为是相对的。例如,/a/b/c由三个路径片断--a、b和c组成了一个路径,此外,这个路径是绝对的,因为第一个路径片断(a)的前缀是正斜杠。<BR>  <BR>  可选的query组件识别要传递给某种资源的数据。这种资源使用该数据获取或生成其它的传递回调用者的数据。例如,http://www.somesite.net/a?x=y, x=y就是一个查询(query),在这个查询中,x=y是传递给某种资源的数据--x是某种实体的名称,y是该实体的值。

markhappy 发表于 2005-9-17 11:46

<P><STRONG><FONT color=#003399>Java网络编程之URI、URL研究专题二</FONT></STRONG></P>
<P>最后一个组件是fragment。尽管该组件作为URI的一部分出现,但不是绝对的。当使用URI进行某种检索操作时,后面执行操作的软件使用fragment聚焦于软件感兴趣的资源部分(在该软件成功检索到资源的数据后)。<BR>  <BR>  为了实际表现前面提到的组件信息,可以使用下面的URI:<BR>  <BR>  ftp://george@x.com:90/public/notes?text=shakespeare#hamlet<BR>  <BR>  上面的URI把ftp识别为大纲,把george@x.com:90识别为基于服务器的授权机构(其中george是用户信息,x.com是主机,90是端口),把/public/notes识别为路径,把text=shakespeare识别为查询,把hamlet识别为片断。<BR>  <BR>  本质上它是一个叫做george的用户希望通过/public/notes路径在服务器x.com的90端口上检索shakespeare文本的hamlet信息。在shakespeare成功的返回到该程序后,程序定位hamlet段并把它呈献给该用户。<BR>  <BR>  标准化可以通过目录术语来理解。假定目录x直接位于根目录之下,x有子目录a和b,b有文件memo.txt,a是当前目录。为了显示memo.txt中的内容(在微软Windows下),你可能输入type \x\.\b\memo.txt。<BR>  <BR>  你也可能输入type \x\a\..\b\memo.txt,在这种情况下,a和..的出现是没有必要的。这两种形式都不是最简单的。但是如果输入\x\b\memo.txt,你就指定了最简单的路径了,从根目录开始访问memo.txt。最简单的\x\b\memo.txt路径就是标准化的路径。<BR>  <BR>  通常通过基本的和相对的URI访问资源。基本的URI是绝对的URI,它唯一地标识了某种资源的名字空间,而相对的URI标识了与基础的URI相对的资源。(与基本的URI不同,相对的URI在某种资源的生存周期内可以永远不需要改变)。因为基本的和相对的URI都不能完整的识别某种资源,有必要把两种URI通过解析过程合并。相反地,通过相对化从合并的URI中提取相对的URI也是可行的。<BR>  <BR>  <B>注意</B><BR>  <BR>  不透明的URI与其它的URI不同,它不服从标准化、分解和相对化。<BR>  <BR>  假定你把x://a/作为基础的URI,并把b/c作为相对的URI。根据基础URI分解这个相对的URI将产生x://a/b/c。根据x://a/相对化x://a/b/c将产生b/c。<BR>  <BR>  URI不能定位或读取/写入资源。这是统一的资源定位器(URL)的任务。URL是一种URI,但是它的大纲组件是已知的网络协议(简称协议),并且它把URI组件与某种协议处理程序(一种资源定位器和根据协议建立的约束规则与资源通讯的读/写机制)。<BR>  <BR>  URI一般不能为资源提供持久不便的名称。这是统一的资源命名(URN)的任务。URN也是一种URI,但是全球唯一的、持久不便的,即使资源不在存在或不再使用。<BR>  <BR>  <B>使用URI</B><BR>  <BR>  网络API通过提供了URI类(位于java.net程序包中),使我们在源代码层使用URI成为可能。URI的构造函数建立了封装URI的URI对象;URI的方法建立URI对象。<BR>  <BR>  如果授权机构组件是基于服务器的就分析它,提取URI组件,决定URI对象的URI是绝对的还是相对的;决定URI对象的URI是不透明的还是分层的。<BR>  <BR>  比较两个URI对象中的URI;标准化(normalize)URI对象的URI;根据URI对象的基础URI分解某个相对的URI以得到已分解的URI。根据URI对象的基础URI关联某个已分解的URI以得到相对的URI,把URI对象转换为URL对象。<BR>  <BR>  我们进一步查看URI类,在它里面有五个构造函数。最简单的是URI(String uri)。这个构造函数把URI作为String类型的参数,把URI分解为组件,并把这些组件存储在一个新的URI对象中。<BR>  <BR>  如果String对象的URI(通过uri引用)违反了RFC 2396的语法规则,其它的四个构造函数URI(String uri)将会产生一个java.net.URISyntaxException对象。<BR>  <BR>  下面的代码片断演示了使用URI(String uri)建立封装了一个简单的URI组件的URI对象:<BR>  <BR>  URI uri = new URI ("http://www.cnn.com"); </P>

markhappy 发表于 2005-9-17 16:03

<P><STRONG><FONT color=#003399>Java网络编程之URI、URL研究专题三</FONT></STRONG></P>
<P>典型情况下URI构造函数用于建立封装用户指定的URI的URI对象。因为用户可能输入不正确的URI,所以URI构造函数产生已检查的URISyntaxException对象。这意味着你的代码必须明确地尝试着调用某个URI构造函数并捕捉异常,或者通过在该方法的Throws子句中列举URISyntaxException以"推卸责任"。<BR>  <BR>  如果你知道URI是有效的(例如在源代码中的URI),将不会产生URISyntaxException对象。因为在这种情况下处理某个URI构造函数的异常处理要求可能有困难,所以URI提供了静态的create(String uri)方法。<BR>  <BR>  这个方法分解通过uri引用的String对象中包含URI,如果该URI没有违反任何语法规则就建立URI对象(并从方法中返回对它的引用),否则将捕捉到一个内部的URISyntaxException对象,把该对象包装金一个未检查的IllegalArgumentException对象中,并抛出这个IllegalArgumentException对象。<BR>  <BR>  因为IllegalArgumentException是未检查的,你不需要明确的尝试代码并捕捉异常或把它的类名称列举在Throws子句中。<BR>  <BR>  下面的代码片断演示了create(String uri):<BR>  <BR>  URI uri = URI.create ("http://www.cnn.com");<BR>  <BR>  URI构造函数和create(String uri)方法试图分解出某个URI的授权机构组件的用户信息、主机和端口部分。对于按正常形式形成的基于服务器的授权机构组件,它们是会成功的。对于按拙劣的形式形成的基于服务器的授权机构组件,他们将会失败--并且把该授权机构组件当作是基于注册的。<BR>  <BR>  有时你可能知道某个URI的授权机构组件必须是基于服务器的。你可以确保该URI的授权机构组件分解出用户信息、主机和端口,或者你可以确保将产生一个异常(伴随着相应的诊断信息)。你可以通过调用URI的parseServerAuthority()方法实现这种操作。<BR>  <BR>  如果成功分解出URI,该方法将返回包含提取的用户信息、主机和端口部分的URI的新URI对象的一个引用(但是如果授权机构组件已经被分解过了,将会返回调用parseServerAuthority()的URI对象的引用。),否则该方法将产生一个URISyntaxException对象。<BR>  <BR>  下面的代码片断演示了parseServerAuthority():<BR>  <BR>  // 下面的parseServerAuthority()调用出现后会发生什么情况?<BR>  <BR>  URI uri = new URI ("//fobar").parseServerAuthority();<BR>  <BR>  一旦拥有了URI对象,你就可以通过调用getAuthority()、getFragment()、getHost()、getPath()、getPort()、getQuery()、getScheme()、getSchemeSpecificPart()和 getUserInfo()方法提取多种组件。<BR>  <BR>  你也可以通过调用isAbsolute()确定该URI是绝对的还是相对的,通过调用isOpaque()确定该URI是不透明的还是分层的。如果返回值是true意味着该URI是绝对的或不透明的,如果返回值是false意味着该URI是相对的或分层的。<BR>  <BR>  列表1中的程序用命令行参数建立了一个URI对象,调用URI组件提取方法来检索URI的组件,并调用URI的isAbsolute()和isOpaque()方法把该URI分类为绝对的/相对性和不透明的/分层的。<BR>  <BR>  列表1: URIDemo1.java<BR>  <BR>  // URIDemo1.java<BR>  <BR>  import java.net.*;<BR>  <BR>  class URIDemo1<BR>  <BR>  {<BR>  <BR>  ublic static void main (String [] args) throws Exception<BR>  <BR>  {<BR>  <BR>  if (args.length != 1)<BR>  <BR>  {<BR>  <BR>  System.err.println ("usage: java URIDemo1 uri");<BR>  <BR>  return;<BR>  <BR>  }<BR>  <BR>  URI uri = new URI (args [0]);<BR>  <BR>  System.out.println ("Authority = " +uri.getAuthority ());<BR>  <BR>  System.out.println ("Fragment = " +uri.getFragment ());<BR>  <BR>  System.out.println ("Host = " +uri.getHost ());<BR>  <BR>  System.out.println ("Path = " +uri.getPath ());<BR>  <BR>  System.out.println ("Port = " +uri.getPort ());<BR>  <BR>  System.out.println ("Query = " +uri.getQuery ());<BR>  <BR>  System.out.println ("Scheme = " +uri.getScheme ());<BR>  <BR>  System.out.println ("Scheme-specific part = " +<BR>  <BR>  uri.getSchemeSpecificPart ());<BR>  <BR>  System.out.println ("User Info = " +uri.getUserInfo ());<BR>  <BR>  System.out.println ("URI is absolute: " +uri.isAbsolute ());<BR>  <BR>  System.out.println ("URI is opaque: " +uri.isOpaque ());<BR>  <BR>  }<BR>  <BR>  } </P>

markhappy 发表于 2005-9-17 16:04

<P><STRONG><FONT color=#003399>Java网络编程之URI、URL研究专题四</FONT></STRONG></P>
<P>输入java URIDemo1命令后,列表1的输出结果如下:<BR>  <BR>  query://jeff@books.com:9000/public/manuals/appliances?stove#ge:<BR>  <BR>  Authority = jeff@books.com:9000<BR>  <BR>  Fragment = ge<BR>  <BR>  Host = books.com<BR>  <BR>  Path = /public/manuals/appliances<BR>  <BR>  Port = 9000<BR>  <BR>  Query = stove<BR>  <BR>  Scheme = query<BR>  <BR>  //jeff@books.com:9000/public/manuals/appliances?stove<BR>  <BR>  User Info = jeff<BR>  <BR>  URI is absolute: true<BR>  <BR>  URI is opaque: false<BR>  <BR>  上面的输出显示该URI是绝对的,因为它指定了一个大纲(query),并且该URI是分层的,因为query后面有/符号。<BR>  <BR>  <B>技巧</B><BR>  <BR>  你应该调用URI的compareTo(Object o)和equals(Object o)来决定URI的次序(为了排序目的)和等同性。你可以参考SDK文档,查阅这些方法的更多信息。<BR>  <BR>  URI类支持基本的URI操作,包括标准化(normalization)、分解(resolution)和相对化(relativization)。标准化是通过URI的normalize()方法支持的。调用normalize()时,它返回对新URI对象的引用,该对象包含调用的URI对象的URI的标准的表现。<BR>  <BR>  列表2演示了normalize()方法。它把URI作为程序的唯一的参数,URIDemo2打印出标准的相等的URI。<BR>  <BR>  列表2: URIDemo2.java<BR>  <BR>  // URIDemo2.java<BR>  <BR>  import java.net.*;<BR>  <BR>  class URIDemo2<BR>  <BR>  {<BR>  <BR>  ublic static void main (String [] args) throws Exception<BR>  <BR>  {<BR>  <BR>  if (args.length != 1)<BR>  <BR>  {<BR>  <BR>  System.err.println ("usage: java URIDemo2 uri");<BR>  <BR>  return;<BR>  <BR>  }<BR>  <BR>  URI uri = new URI (args [0]);<BR>  <BR>  System.out.println ("Normalized URI = " +<BR>  <BR>  uri.normalize ().toString ());<BR>  <BR>  }<BR>  <BR>  }<BR>  <BR>  在编译URIDemo2后,在命令行输入java URIDemo2 x/y/../z/./q,将看到下面的输出:<BR>  <BR>  Normalized URI = x/z/q<BR>  <BR>  上面的输出显示y、..和.消失了。这是因为..意味着你想直接在x下面访问名字空间的z部分,.意味着你希望访问与z部分相关的名字空间的q部分。<BR>  <BR>  URI通过提供resolve(String uri)、resolve(URI uri)和relativize(URI uri)方法支持反向解析和相对化操作。如果uri引用是空的(null)这三个方法都会产生NullPointerException对象。同样,如果指定的URI违反了RFC 2396语法规则,resolve(String uri)通过的内部的create(String uri)调用间接地产生一个IllegalArgumentException对象。<BR>  <BR>  列表3的代码演示了resolve(String uri)和relativize(URI uri)。<BR>  <BR>  列表3: URIDemo3.java<BR>  <BR>  // URIDemo3.java<BR>  <BR>  import java.net.*;<BR>  <BR>  class URIDemo3<BR>  <BR>  {<BR>  <BR>  ublic static void main (String [] args) throws Exception<BR>  <BR>  {<BR>  <BR>  if (args.length != 2)<BR>  <BR>  {<BR>  <BR>  System.err.println ("usage: " +<BR>  <BR>  "java URIDemo3 uriBase uriRelative");<BR>  <BR>  return;<BR>  <BR>  }<BR>  <BR>  URI uriBase = new URI (args [0]);<BR>  <BR>  System.out.println ("Base URI = " +uriBase.toString ());<BR>  <BR>  URI uriRelative = new URI (args [1]);<BR>  <BR>  System.out.println ("Relative URI = " +uriRelative.toString ());<BR>  <BR>  URI uriResolved = uriBase.resolve (uriRelative);<BR>  <BR>  System.out.println ("Resolved URI = " +uriResolved.toString ());<BR>  <BR>  URI uriRelativized = uriBase.relativize (uriResolved);<BR>  <BR>  System.out.println ("Relativized URI = " +uriRelativized.toString ());<BR>  <BR>  }<BR>  <BR>  }<BR>  <BR>  在编译URIDemo3后,在命令行输入java URIDemo3 http://www.somedomain.com/ x/../y. ,输出如下:<BR>  <BR>  Base URI = http://www.somedomain.com/<BR>  <BR>  Relative URI = x/../y<BR>  <BR>  Resolved URI = http://www.somedomain.com/y<BR>  <BR>  Relativized URI = y<BR>  <BR>  上面的输出显示相对的URI的x/../y根据基础URI http://www.somedomain.com/分解并(在宮.相对的URI。<BR>  <BR>  <B>技巧</B><BR>  <BR>  调用URI的toURL()方法把URI转换为URL。 </P>

markhappy 发表于 2005-9-17 16:04

<DIV align=center><B><FONT color=#003399>Java网络编程之URI、URL研究专题五 </FONT></B></DIV>
<P> 在专题的上篇Java网络编程之URI、URL研究专题中我们介绍了URI、URL的慨念和体系结构,以及如何使用URI在本文中我将继续向大家介绍如何使用URL和MIME(多用途的网际邮件扩充协议)的概念以及它如何与URL发生联系的。<BR>  <BR>  <B>使用URL</B><BR>  <BR>  网络API通过提供URL类让我们能在源代码层使用URL。每一个URL对象都封装了资源的标识符和协议处理程序。前面的技巧显示了获得URL对象的途径之一是调用URI对象的toURL()方法。但是这种选择不一定方便(为什么在需要URL对象的时候必须建立URI对象呢?)。<BR>  <BR>  作为代替,你可以调用URL构造函数来建立URL对象。你也可以调用URL的方法来提取URL的组件,打开一个输入流(input stream)从资源中读取信息,获得某个能方便检索资源数据的对象的引用,比较两个URL对象中的URL,获得到资源的连接对象,该连接对象允许代码了解(并写入)更多的资源的信息。<BR>  <BR>  URL类有六个构造函数。其中最简单的是URL(String url),它有一个String类型的参数,把URL分解为自己的组件,并把这些组件存储在一个新的URL对象中。如果某个URL没有包含协议处理程序或该URL的协议是未知的,其它的五个构造函数会产生一个java.net.MalformedURLException对象。<BR>  <BR>  下面的代码片断演示了使用URL(String url)建立一个URL对象,该对象封装了一个简单的URL组件和http协议处理程序。<BR>  <BR>  URL url = new URL ("http://www.informit.com");<BR>  <BR>  一旦拥有了URL对象,你就可以使用getAuthority()、getDefaultPort()、 getFile()、 getHost()、 getPath()、getPort()、 getProtocol()、getQuery()、getRef()和getUserInfo(). The getDefaultPort()等方法提取各种组件。如果URL中没有指定端口的部分,getDefaultPort()方法返回URL对象的协议处理程序使用(资源定位)的默认端口。<BR>  <BR>  getFile()方法返回路径和查询组件的结合体。getProtocol()方法返回决定资源的连接类型(例如http、mailto、ftp)的协议的名称。getRef()方法返回URL的部分片断(我们所知道的引用)。最后,getUserInfo()方法返回授权机构组件的用户信息部分。<BR>  <BR>  在这些URL组件提取方法中,如果某些组件不存在(如果没有给URL对象的协议处理程序指定默认的端口,它也返回-1),这些方法就返回null或-1。<BR>  <BR>  作为这些组件提取方法的补充,你还可以调用openStream()方法检索java.io.InputStream引用。使用这种引用,你可以用面向字节的方式读取资源。<BR>  <BR>  列表4是URLDemo1的源代码。该程序从命令行参数建立了一个URL对象,调用URL组件提取方法来检索该URL的组件,调用URL的openStream()方法打开与资源的连接并返回一个用于从资源读取字节数据的InputStream引用,读取/打印这些字节,关闭输入流。<BR>  <BR>  列表4: URLDemo1.java<BR>  <BR>  // URLDemo1.java<BR>  <BR>  import java.io.*;<BR>  <BR>  import java.net.*;<BR>  <BR>  class URLDemo1<BR>  <BR>  {<BR>  <BR>  ublic static void main (String [] args) throws IOException<BR>  <BR>  {<BR>  <BR>  if (args.length != 1)<BR>  <BR>  {<BR>  <BR>  System.err.println ("usage: java URLDemo1 url");<BR>  <BR>  return;<BR>  <BR>  }<BR>  <BR>  URL url = new URL (args [0]);<BR>  <BR>  System.out.println ("Authority = "+ url.getAuthority ());<BR>  <BR>  System.out.println ("Default port = " +url.getDefaultPort ());<BR>  <BR>  System.out.println ("File = " +url.getFile ());<BR>  <BR>  System.out.println ("Host = " +url.getHost ());<BR>  <BR>  System.out.println ("Path = " +url.getPath ());<BR>  <BR>  System.out.println ("Port = " +url.getPort ());<BR>  <BR>  System.out.println ("Protocol = " +url.getProtocol ());<BR>  <BR>  System.out.println ("Query = " +url.getQuery ());<BR>  <BR>  System.out.println ("Ref = " +url.getRef ());<BR>  <BR>  System.out.println ("User Info = " +url.getUserInfo ());<BR>  <BR>  System.out.print ('\n');<BR>  <BR>  InputStream is = url.openStream ();<BR>  <BR>  int ch;<BR>  <BR>  while ((ch = is.read ()) != -1)<BR>  <BR>  System.out.print ((char) ch);<BR>  <BR>  is.close ();<BR>  <BR>  }<BR>  <BR>  }<BR>  在命令行输入java URLDemo1 http://www.javajeff.com/articles/articles/html后,上面的代码的输出如下:</P>

英雄无泪 发表于 2009-4-29 13:49

支持誉天论坛,誉天CISCO/RHCE社区

zhe552200 发表于 2010-1-20 19:09

[font=楷体_GB2312][size=4][b]太阳城,菲律宾在线娱乐有限公司。
欢迎光临太阳城,我们在亚洲,互联网和电子游戏上最受欢迎的球员大活游戏社区之一,致力于互联网提供的电子娱乐用户提供广泛,从2005年开始,服务的球员,我们一直在惊人的增长。在过去的一年,太阳城一直在不懈地追求技术创新,强大的技术队伍为依托,致力于为客户提供高质量的娱乐服务的用户,由2006年第三季度末,太阳城游戏生活投资界超过50,000,000香港,有超过10,000,000的注册会员。今天,我们的服务水平和客户满意度已竖立通过强大的运营能力的游戏信誉,周到的客户服务能力,提高技术支持和能力的支持,为用户形成一个健全的和有效的支付平台,面向综合的交互式视频游戏平台。所有年龄的玩家可以现场网与其它成千上万的玩家互动游戏数万国家的互动平台,体验互动电子娱乐带来的乐趣在太阳城。太阳城为“世界上最大的游戏平台,更优质的娱乐服务,”一个战略目标的重要组成部分,通过我们的硬件和软件,内容,以及网络集成服务,提供用户。本公司秉承“顾客至上,锐意进取”的经营理念,坚持“客户第一”为客户提供优质的服务,多数的原则。欢迎广大客户惠顾!

更多信息
主要产品或服务:Doudi柱,百家乐,去,龙虎,21点,老虎机等等;
主要行业:主要部门参加的区域代理;加入其他代理人;
经营模式:代理招商
注册资本:港币500000000
向公司注册处处长:之间的主要公路星级酒店,1808年国家级新友谊澳门点
时间为公司成立:2005年
主要营业地点:菲律宾星级酒店,新友谊澳门点18楼
主要市场:中国,香港,澳门,台湾地区,日本,北美,南美,西欧,东欧,东亚,东南亚,中东,非洲,大洋洲,世界

联系方式
(客户服务经理)中国:+86—13640277779  地址:中国澳门,澳门和之间的主要公路星级酒店,[size=5][color=sienna]公司网站:[/color][/size][/b][/size][/font][url=http://www.83suncity-bj.com/][font=楷体_GB2312][size=5][color=sienna][b]http://www.83suncity-bj.com[/b][/color][/size][/font][/url] [font=楷体_GB2312][size=4][b][size=5][color=yellow]
[/color][/size]
[img]http://img472.ph.126.net/7XFP3eiV3M576XhykA3VzQ==/29836347532434037.jpg[/img][/b][/size][/font]

页: [1]

Powered by Discuz! Archiver 7.0.0  © 2001-2009 Comsenz Inc.