Size: 7346
Comment:
|
Size: 12582
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 5: | Line 5: |
1. `Para 3`:''Some people would pipe up to add that &soap; allows for one-way asynchronous message passing, and document-oriented web services.''[[BR]] 有些人觉得应该补充上:&soap; 还允许单向异步的信息通过,'''并且是'''面向文档的 Web 服务。[[BR]] (./) 有些人觉得应该补充上:&soap; 还允许单向异步的信息通过,'''以及'''面向文档的 Web 服务。 |
1. `Para 3`:''Some people would pipe up to add that SOAP allows for one-way asynchronous message passing, and document-oriented web services.''[[BR]] 有些人觉得应该补充上:SOAP 还允许单向异步的信息通过,'''并且是'''面向文档的 Web 服务。[[BR]] (./) 有些人觉得应该补充上:SOAP 还允许单向异步的信息通过,'''以及'''面向文档的 Web 服务。 |
Line 11: | Line 11: |
1. `进一步阅读`:''The &soap; '''specification''' is surprisingly readable, '''if you like that sort of thing.'''''[[BR]] &soap; '''说明书对于 &soap; 相关的问题讨论非常易读'''。[[BR]] (./) &soap; '''规范相当可读,如果你喜欢这类东西的话'''。 |
1. `进一步阅读`:''The SOAP '''specification''' is surprisingly readable, '''if you like that sort of thing.'''''[[BR]] SOAP '''说明书对于 SOAP 相关的问题讨论非常易读'''。[[BR]] (./) SOAP '''规范相当可读,如果你喜欢这类东西的话'''。 |
Line 22: | Line 22: |
1. `例12.6, (1)`:你通过 SOAPProxy 这个 {i} ^代理 (^proxy^)^ 类访问远程 &soap; 服务器。 1. `例12.6, (2)`:每个 &soap; 服务都有一个命名空间(namespace),这个命名空间是由服务器任意命名的。这不过是为了调用 &soap; 方法而设置的。它使得服务器'''为多个不相关的服务提供'''服务 URL 和路径请求'''共享'''成为可能。这与 Python 中模块'''到 packages''' 的关系类似。[[BR]] (./) 每个 &soap; 服务都有一个命名空间(namespace),这个命名空间是由服务器任意命名的。这不过是为调用 &soap; 方法设置的。它使得服务器'''让多个不相关的服务共享'''服务 URL 和路径请求成为可能。这与 Python 中模块'''相对于包'''的关系类似。 1. `例12.6, (3)`:''You're creating the SOAPProxy with the service URL and the service namespace. '''This doesn't make any connection to the &soap; server'''; it simply creates a local Python object.''[[BR]] 这里你创建了包含服务 URL 和服务命名空间的 SOAPProxy。'''这与 &soap; 服务器无关''';仅仅是建立了一个本地 Python 对象。[[BR]] (./) 这里你创建了包含服务 URL 和服务命名空间的 SOAPProxy。'''此时还不会连接到 &soap; 服务器''';仅仅是建立了一个本地 Python 对象。 1. `例12.6, (4)`:到此为止,如果你的设置完全正确,应该可以向调用本地函数一样调用远程 &soap; 方法。'''像'''给普通函数传递参数并接收返回一样,但在这背后却隐藏着很多的工作。[[BR]] |
1. `例12.6, (1)`:你通过 SOAPProxy 这个 {i} ^代理 (^proxy^)^ 类访问远程 SOAP 服务器。 1. `例12.6, (2)`:每个 SOAP 服务都有一个命名空间(namespace),这个命名空间是由服务器任意命名的。这不过是为了调用 SOAP 方法而设置的。它使得服务器'''为多个不相关的服务提供'''服务 URL 和路径请求'''共享'''成为可能。这与 Python 中模块'''到 packages''' 的关系类似。[[BR]] (./) 每个 SOAP 服务都有一个命名空间(namespace),这个命名空间是由服务器任意命名的。这不过是为调用 SOAP 方法设置的。它使得服务器'''让多个不相关的服务共享'''服务 URL 和路径请求成为可能。这与 Python 中模块'''相对于包'''的关系类似。 1. `例12.6, (3)`:''You're creating the SOAPProxy with the service URL and the service namespace. '''This doesn't make any connection to the SOAP server'''; it simply creates a local Python object.''[[BR]] 这里你创建了包含服务 URL 和服务命名空间的 SOAPProxy。'''这与 SOAP 服务器无关''';仅仅是建立了一个本地 Python 对象。[[BR]] (./) 这里你创建了包含服务 URL 和服务命名空间的 SOAPProxy。'''此时还不会连接到 SOAP 服务器''';仅仅是建立了一个本地 Python 对象。 1. `例12.6, (4)`:到此为止,如果你的设置完全正确,应该可以向调用本地函数一样调用远程 SOAP 方法。'''像'''给普通函数传递参数并接收返回一样,但在这背后却隐藏着很多的工作。[[BR]] |
Line 36: | Line 36: |
1. `例12.7, (3)`:最后,'''正常'''调用远程 &soap; 方法。[[BR]] (./) 最后,'''和平常一样,'''调用远程 &soap; 方法。 |
1. `例12.7, (3)`:最后,'''正常'''调用远程 SOAP 方法。[[BR]] (./) 最后,'''和平常一样,'''调用远程 SOAP 方法。 |
Line 43: | Line 43: |
1. `Para 2`:'''试想一下''':前面两部分所展现的调用只有一个参数和返回的简单远程 &soap; 方法。[[BR]] | 1. `Para 2`:'''试想一下''':前面两部分所展现的调用只有一个参数和返回的简单远程 SOAP 方法。[[BR]] |
Line 47: | Line 47: |
1. `Para 4`:&wsdl; 是“网络服务描述语言(Web Services Description Language)”的缩写。 {i} ^它^尽管是为自如地表述多种类型的网络服务而设定,却也经常用于描述 &soap; 网络服务。 1. `Para -6`:''The type of web service (probably function calls using &soap;, although as I mentioned, &wsdl; is flexible enough to describe a wide variety of web services)''[[BR]] 网络服务的类型(可能'''还包括''' &soap; 的函数调用,'''正像我所说过的''',&wsdl; 足够自如地去描述网络服务的广泛内容)[[BR]] (./) 网络服务的类型(可能'''是''' &soap; 的函数调用,'''但我说过''',&wsdl; 足够自如地去描述网络服务的广泛内容) |
1. `Para 4`:WSDL 是“网络服务描述语言(Web Services Description Language)”的缩写。 {i} ^它^尽管是为自如地表述多种类型的网络服务而设定,却也经常用于描述 SOAP 网络服务。 1. `Para -6`:''The type of web service (probably function calls using SOAP, although as I mentioned, WSDL is flexible enough to describe a wide variety of web services)''[[BR]] 网络服务的类型(可能'''还包括''' SOAP 的函数调用,'''正像我所说过的''',WSDL 足够自如地去描述网络服务的广泛内容)[[BR]] (./) 网络服务的类型(可能'''是''' SOAP 的函数调用,'''但我说过''',WSDL 足够自如地去描述网络服务的广泛内容) |
Line 53: | Line 53: |
1. `例12.8, (2)`:''To use a &wsdl; file, you again use a proxy class, WSDL.Proxy, which takes a single argument: the &wsdl; file. Note that in this case you are passing in the URL of a &wsdl; file stored on the remote server, but the proxy class works just as well with a local copy of the &wsdl; file.''[[BR]] 使用一个 &wsdl; 文件,你还是要用到一个 proxy 类:WSDL.Proxy,它只需一个参数:&wsdl; 文件。'''我所说的是'''把存储在远程服务器上的 &wsdl; 的 URL,但是这个 proxy 类对于本地的 &wsdl; 副本工作同样出色。[[BR]] (./) 使用一个 &wsdl; 文件,你还是要用到一个 proxy 类:WSDL.Proxy,它只需一个参数:&wsdl; 文件。'''我指定的是'''存储在远程服务器上的 &wsdl; 的 URL,但是这个 proxy 类对于本地的 &wsdl; 副本工作同样出色。 1. `例12.8, (3)`:&wsdl; proxy 类'''以 Python 字典 server.methods 的方式'''揭示有效函数。所以'''列表'''有效方法'''就像调用字典方法 keys() 一样简单'''。[[BR]] (./) &wsdl; proxy 类'''通过 Python 字典 server.methods''' 揭示有效函数。所以'''列出'''有效方法'''只需调用字典方法 keys()'''。 1. `例12.9, (3)`:在通过 &soap; 调用函数时,你不需要知道参数名,但 &soap; '''却'''支持在调用函数时使用参数名'''的情形''' {X} (类似于 &python; )。 |
1. `例12.8, (2)`:''To use a WSDL file, you again use a proxy class, WSDL.Proxy, which takes a single argument: the WSDL file. Note that in this case you are passing in the URL of a WSDL file stored on the remote server, but the proxy class works just as well with a local copy of the WSDL file.''[[BR]] 使用一个 WSDL 文件,你还是要用到一个 proxy 类:WSDL.Proxy,它只需一个参数:WSDL 文件。'''我所说的是'''把存储在远程服务器上的 WSDL 的 URL,但是这个 proxy 类对于本地的 WSDL 副本工作同样出色。[[BR]] (./) 使用一个 WSDL 文件,你还是要用到一个 proxy 类:WSDL.Proxy,它只需一个参数:WSDL 文件。'''我指定的是'''存储在远程服务器上的 WSDL 的 URL,但是这个 proxy 类对于本地的 WSDL 副本工作同样出色。 1. `例12.8, (3)`:WSDL proxy 类'''以 Python 字典 server.methods 的方式'''揭示有效函数。所以'''列表'''有效方法'''就像调用字典方法 keys() 一样简单'''。[[BR]] (./) WSDL proxy 类'''通过 Python 字典 server.methods''' 揭示有效函数。所以'''列出'''有效方法'''只需调用字典方法 keys()'''。 1. `例12.9, (3)`:在通过 SOAP 调用函数时,你不需要知道参数名,但 SOAP '''却'''支持在调用函数时使用参数名'''的情形''' {X} (类似于 Python )。 |
Line 62: | Line 62: |
1. `例12.11, (1)`: {i} ^这^比直接调用 SOAP 服务时的设置简单,因为在 WSDL 文件中包含着调用服务所需要的服务 URL 和命名空间。 == 搜索 Google == 1. `过程12.4, 2.`:还是在 http://www.google.com/apis/ 上,下载 Google 网络 APIs 开发工具包( {i} ^Google Web APIs developer ^kit) 1. `例12.13上`:[[BR]] lr ( {i} “^language restrict^”,语言限制) ie 和 oe ( {i} “^input encoding^”,输入编码和 “^output encoding^”,输出编码) 1. `例12.13, (1)`:……记住'''在''' {X} 要使用你注册 Google 网络服务时授权给你自己的 Google API 许可证。 1. `例12.14, (2)`:''In total, there were approximately 30 million results. '''You can access them 10 at a time by changing the start parameter and calling server.doGoogleSearch again.'''''[[BR]] 总共有接近30,000,000个结果信息,'''你可以通过以 10 递增地改变 start 参数来重复调用 server.doGoogleSearch 。'''[[BR]] (./) 总共有接近 30,000,000 个结果信息。'''通过让 start 参数以 10 递增来重复调用 server.doGoogleSearch,你能够获得全部的结果。''' == SOAP 网络服务故障排除 == 1. `Para 2`:正如你在本章中看到的,SOAP 牵扯了很多层面。'''需要 HTTP 层,SOAP 需要向 HTTP 服务器发送 XML 文档并接收返回的 XML 文档。'''这样一来,你在 第 11 章 HTTP Web 服务 学到的'''差错'''技术在这里都有了用武之地。[[BR]] (./) 正如你在本章中看到的,SOAP 牵扯了很多层面。'''SOAP 向 HTTP 服务器发送 XML 文档并接收返回的 XML 文档时需要用到 HTTP 层。'''这样一来,你在 第 11 章 HTTP Web 服务 学到的'''调试'''技术在这里都有了用武之地。 1. `例12.15, (2)`:''The server responds by sending a SOAP Fault, which SOAPpy turns into a Python exception of type SOAPpy.Types.faultType. All errors returned from any SOAP server will always be SOAP Faults, so you can easily catch this exception. In this case, the human-readable part of the SOAP Fault gives a clue to the problem: the method element is not namespaced, because the original SOAPProxy object was not configured with a service namespace.''[[BR]] 服务器返回的是一个 SOAP 错误,SOAPpy '''溢出了SOAPpy.Types.faultType 这个 Python 异常'''。从任何 SOAP 服务器返回的错误都是 SOAP 错误,因此你可以轻易地捕获这个异常。就此'''出'''而言,我们能从 SOAP 错误信息中看出端倪:由于源 SOAPProxy 对象没有设置服务命名空间,因此方法元素也就没有了命名空间。[[BR]] (./) 服务器返回的是一个 SOAP 错误 '''(Fault)''',SOAPpy '''把它转换为 Python 异常 SOAPpy.Types.faultType'''。从任何 SOAP 服务器返回的错误都是 SOAP 错误,因此你可以轻易地捕获这个异常。就此'''处'''而言,我们能从 SOAP 错误信息中看出端倪:由于源 SOAPProxy 对象没有设置服务命名空间,因此方法元素也就没有了命名空间。 1. `例12.16上`:''Misconfiguring the basic elements of the SOAP service is '''one of the problems that WSDL aims to solve.'''''[[BR]] 错误配置 SOAP 服务的基本元素是 '''WSDL 问题解决的着眼点'''。[[BR]] (./) 错误配置 SOAP 服务的基本元素是 '''WSDL 着眼解决的问题'''。 1. `例12.16, (1)`:……WSDL.Proxy 不会为你强制 {i} ^转换^数据类型;…… 1. `例12.18上`:''What about Google's web service? The most common problem I've had with it is that I forget to set the application key properly.''[[BR]] 那么 Google 网络服务方面又如何呢?'''最常见的错误是我曾经犯过的忘记正确设置应用许可证错误。'''[[BR]] (./) '''我曾经犯过的最常见的错误是忘记正确设置应用许可证。''' 1. `例12.18`:''Calling a Method With An '''Application-Specific''' Error''[[BR]] 调用方法返回一个'''应用指定'''错误[[BR]] (./) 调用方法返回一个'''应用特定的'''错误 1. `例12.18, (1)`:''The problem is '''application-specific''': the first argument is supposed to be my application key,...''[[BR]] 问题'''在于应用指定''':第一个参数应该是我的应用许可证,……[[BR]] (./) '''这个问题是应用特定的''':第一个参数应该是我的应用许可证,…… 1. `例12.18, (2)`: Google 服务器返回的是一个 SOAP 错误和一大串特别长的错误信息,其中包含了完整的 Java 堆栈跟踪。记住所有的 SOAP 错误都被标示为 '''SOAP 错误:设置错误,函数参数错误以及应用指定错误'''等等。在其中埋藏的至关重要信息'''确是''':'''非有效授权许可证:foo(Invalid authorization key: foo)'''。[[BR]] (./) Google 服务器返回的是一个 SOAP 错误和一大串特别长的错误信息,其中包含了完整的 Java 堆栈跟踪。记住所有的 SOAP 错误都被标示为''' SOAP Faults: errors in configuration (设置错误), errors in function arguments (函数参数错误),或者是应用特定的错误 (这里就是) '''等等。在其中埋藏的至关重要信息'''是''':'''Invalid authorization key: foo(非有效授权许可证:foo)'''。 == 小结 == `pass` |
8-3<X12>soap.xml SOAP web 服务
Para 2:但解开这层面纱,SOAP 库实际上扮演了一个多 XML 文档和远程服务器参与的复杂处理过程。BR
但揭开这层面纱,SOAP 库实际上执行了一个多个 XML 文档和远程服务器参与的复杂处理过程。
Para 3:Some people would pipe up to add that SOAP allows for one-way asynchronous message passing, and document-oriented web services.BR 有些人觉得应该补充上:SOAP 还允许单向异步的信息通过,并且是面向文档的 Web 服务。BR
有些人觉得应该补充上:SOAP 还允许单向异步的信息通过,以及面向文档的 Web 服务。
概览
Para 1:你是否曾经
希望能以程序化的方式访问 Google 的搜索结果呢?
进一步阅读:The SOAP specification is surprisingly readable, if you like that sort of thing.BR SOAP 说明书对于 SOAP 相关的问题讨论非常易读。BR
SOAP 规范相当可读,如果你喜欢这类东西的话。
安装 SOAP 库
希望检验 XXX 安装的是否正确,……BR
要检验 XXX 安装得是否正确
Para 3:你所
要用到的第一个库是 PyXML,
它是 XML 库的一个高级组件,这个库
提供了比我们在 第 9 章 学习的 XML 内建库更多的功能。
12.2.2, Para 1:你所需要安装的第二个库是 fpconst,使
一系列支持 IEEE754 double-precision 特殊值的常量和函数,……
它是
步入 SOAP
例12.6, (1):你通过 SOAPProxy 这个
代理 (proxy) 类访问远程 SOAP 服务器。
例12.6, (2):每个 SOAP 服务都有一个命名空间(namespace),这个命名空间是由服务器任意命名的。这不过是为了调用 SOAP 方法而设置的。它使得服务器为多个不相关的服务提供服务 URL 和路径请求共享成为可能。这与 Python 中模块到 packages 的关系类似。BR
每个 SOAP 服务都有一个命名空间(namespace),这个命名空间是由服务器任意命名的。这不过是为调用 SOAP 方法设置的。它使得服务器让多个不相关的服务共享服务 URL 和路径请求成为可能。这与 Python 中模块相对于包的关系类似。
例12.6, (3):You're creating the SOAPProxy with the service URL and the service namespace. This doesn't make any connection to the SOAP server; it simply creates a local Python object.BR 这里你创建了包含服务 URL 和服务命名空间的 SOAPProxy。这与 SOAP 服务器无关;仅仅是建立了一个本地 Python 对象。BR
这里你创建了包含服务 URL 和服务命名空间的 SOAPProxy。此时还不会连接到 SOAP 服务器;仅仅是建立了一个本地 Python 对象。
例12.6, (4):到此为止,如果你的设置完全正确,应该可以向调用本地函数一样调用远程 SOAP 方法。像给普通函数传递参数并接收返回一样,但在这背后却隐藏着很多的工作。BR
这和给普通函数传递参数并接收返回值一样,但在背后却隐藏着很多的工作。
SOAP 网络服务查错
“显性数据类型”改为“显式数据类型”。
“(Python) 原始数据类型”改为“本地数据类型”。
例12.7, (1):首先,正常建立带有服务 URL 和命名空间的 SOAPProxy。BR
首先,和平常一样,建立带有服务 URL 和命名空间的 SOAPProxy。
例12.7, (3):最后,正常调用远程 SOAP 方法。BR
最后,和平常一样,调用远程 SOAP 方法。
例12.7b, (1):这个元素名 getTemp 就是函数名。SOAPProxy 把 getattr 当作一个发报机。有别使用方法名分别调用本地方法,这里使用方法名构造了一个 XML 请求文档。BR
这个元素名 getTemp 就是函数名。SOAPProxy 使用 getattr 作为分发器。有别于使用方法名分别调用本地方法,这里使用方法名构造了一个 XML 请求文档。
WSDL 介绍
Para 1:它没有做到的是提供任何
方法自省的手段。
Para 2:试想一下:前面两部分所展现的调用只有一个参数和返回的简单远程 SOAP 方法。BR
这不是假设。BR
考虑一下:……
Para 3:Python 精妙地在
不需要明示类型,……
Para 4:WSDL 是“网络服务描述语言(Web Services Description Language)”的缩写。
它尽管是为自如地表述多种类型的网络服务而设定,却也经常用于描述 SOAP 网络服务。
Para -6:The type of web service (probably function calls using SOAP, although as I mentioned, WSDL is flexible enough to describe a wide variety of web services)BR 网络服务的类型(可能还包括 SOAP 的函数调用,正像我所说过的,WSDL 足够自如地去描述网络服务的广泛内容)BR
网络服务的类型(可能是 SOAP 的函数调用,但我说过,WSDL 足够自如地去描述网络服务的广泛内容)
以 WSDL 进行SOAP 内省
例12.8, (2):To use a WSDL file, you again use a proxy class, WSDL.Proxy, which takes a single argument: the WSDL file. Note that in this case you are passing in the URL of a WSDL file stored on the remote server, but the proxy class works just as well with a local copy of the WSDL file.BR 使用一个 WSDL 文件,你还是要用到一个 proxy 类:WSDL.Proxy,它只需一个参数:WSDL 文件。我所说的是把存储在远程服务器上的 WSDL 的 URL,但是这个 proxy 类对于本地的 WSDL 副本工作同样出色。BR
使用一个 WSDL 文件,你还是要用到一个 proxy 类:WSDL.Proxy,它只需一个参数:WSDL 文件。我指定的是存储在远程服务器上的 WSDL 的 URL,但是这个 proxy 类对于本地的 WSDL 副本工作同样出色。
例12.8, (3):WSDL proxy 类以 Python 字典 server.methods 的方式揭示有效函数。所以列表有效方法就像调用字典方法 keys() 一样简单。BR
WSDL proxy 类通过 Python 字典 server.methods 揭示有效函数。所以列出有效方法只需调用字典方法 keys()。
例12.9, (3):在通过 SOAP 调用函数时,你不需要知道参数名,但 SOAP 却支持在调用函数时使用参数名的情形
(类似于 Python )。
例12.9, (4):Each parameter is also explicitly typed, using datatypes defined in XML Schema.BR 每个参数都是都是显性类型的,在 XML Schema 中以数据类型定义。BR
每个参数都是都是显式类型的,使用的是在 XML Schema 定义的数据类型。
例12.11, (1):
这比直接调用 SOAP 服务时的设置简单,因为在 WSDL 文件中包含着调用服务所需要的服务 URL 和命名空间。
搜索 Google
过程12.4, 2.:还是在 http://www.google.com/apis/ 上,下载 Google 网络 APIs 开发工具包(
Google Web APIs developer kit)
例12.13上:BR lr (
“language restrict”,语言限制) ie 和 oe (
“input encoding”,输入编码和 “output encoding”,输出编码)
例12.13, (1):……记住在
要使用你注册 Google 网络服务时授权给你自己的 Google API 许可证。
例12.14, (2):In total, there were approximately 30 million results. You can access them 10 at a time by changing the start parameter and calling server.doGoogleSearch again.BR 总共有接近30,000,000个结果信息,你可以通过以 10 递增地改变 start 参数来重复调用 server.doGoogleSearch 。BR
总共有接近 30,000,000 个结果信息。通过让 start 参数以 10 递增来重复调用 server.doGoogleSearch,你能够获得全部的结果。
SOAP 网络服务故障排除
Para 2:正如你在本章中看到的,SOAP 牵扯了很多层面。需要 HTTP 层,SOAP 需要向 HTTP 服务器发送 XML 文档并接收返回的 XML 文档。这样一来,你在 第 11 章 HTTP Web 服务 学到的差错技术在这里都有了用武之地。BR
正如你在本章中看到的,SOAP 牵扯了很多层面。SOAP 向 HTTP 服务器发送 XML 文档并接收返回的 XML 文档时需要用到 HTTP 层。这样一来,你在 第 11 章 HTTP Web 服务 学到的调试技术在这里都有了用武之地。
例12.15, (2):The server responds by sending a SOAP Fault, which SOAPpy turns into a Python exception of type SOAPpy.Types.faultType. All errors returned from any SOAP server will always be SOAP Faults, so you can easily catch this exception. In this case, the human-readable part of the SOAP Fault gives a clue to the problem: the method element is not namespaced, because the original SOAPProxy object was not configured with a service namespace.BR 服务器返回的是一个 SOAP 错误,SOAPpy 溢出了SOAPpy.Types.faultType 这个 Python 异常。从任何 SOAP 服务器返回的错误都是 SOAP 错误,因此你可以轻易地捕获这个异常。就此出而言,我们能从 SOAP 错误信息中看出端倪:由于源 SOAPProxy 对象没有设置服务命名空间,因此方法元素也就没有了命名空间。BR
服务器返回的是一个 SOAP 错误 (Fault),SOAPpy 把它转换为 Python 异常 SOAPpy.Types.faultType。从任何 SOAP 服务器返回的错误都是 SOAP 错误,因此你可以轻易地捕获这个异常。就此处而言,我们能从 SOAP 错误信息中看出端倪:由于源 SOAPProxy 对象没有设置服务命名空间,因此方法元素也就没有了命名空间。
例12.16上:Misconfiguring the basic elements of the SOAP service is one of the problems that WSDL aims to solve.BR 错误配置 SOAP 服务的基本元素是 WSDL 问题解决的着眼点。BR
错误配置 SOAP 服务的基本元素是 WSDL 着眼解决的问题。
例12.16, (1):……WSDL.Proxy 不会为你强制
转换数据类型;……
例12.18上:What about Google's web service? The most common problem I've had with it is that I forget to set the application key properly.BR 那么 Google 网络服务方面又如何呢?最常见的错误是我曾经犯过的忘记正确设置应用许可证错误。BR
我曾经犯过的最常见的错误是忘记正确设置应用许可证。
例12.18:Calling a Method With An Application-Specific ErrorBR 调用方法返回一个应用指定错误BR
调用方法返回一个应用特定的错误
例12.18, (1):The problem is application-specific: the first argument is supposed to be my application key,...BR 问题在于应用指定:第一个参数应该是我的应用许可证,……BR
这个问题是应用特定的:第一个参数应该是我的应用许可证,……
例12.18, (2): Google 服务器返回的是一个 SOAP 错误和一大串特别长的错误信息,其中包含了完整的 Java 堆栈跟踪。记住所有的 SOAP 错误都被标示为 SOAP 错误:设置错误,函数参数错误以及应用指定错误等等。在其中埋藏的至关重要信息确是:非有效授权许可证:foo(Invalid authorization key: foo)。BR
Google 服务器返回的是一个 SOAP 错误和一大串特别长的错误信息,其中包含了完整的 Java 堆栈跟踪。记住所有的 SOAP 错误都被标示为 SOAP Faults: errors in configuration (设置错误), errors in function arguments (函数参数错误),或者是应用特定的错误 (这里就是) 等等。在其中埋藏的至关重要信息是:Invalid authorization key: foo(非有效授权许可证:foo)。
小结
pass