From: John W. <jb...@be...> - 2004-10-27 06:13:58
|
Hi Josh, Thanks for looking into this. I commented out lines 85, 86, and 87 and =20= it seems to have solved the TypeError problem. The only possible snag for me is that I get a new error =20 (UnicodeEncodeError) when I try to access the string that's returned =20 from the operation. The problem only occurs when I try to print the =20= string stored in the variable "response" on line 14 of my test script. Here's the test script I'm using to invoke the operation: 1 #!/usr/bin/python 2 3 from IKEAMonkIndexService_services import * 4 5 import sys 6 7 loc =3D IKEAMonkIndexServiceLocator() 8 # prints messages sent and recieved if tracefile is set 9 kw =3D { 'tracefile' : sys.stdout } 10 11 port =3D loc.getIKEAMonkIndexServiceSOAPType(**kw) 12 request =3D getDescriptionOfTheIKEAMonkIndexWrapper() 13 response =3D =20 port.getDescriptionOfTheIKEAMonkIndexOperation(request) 14 print response Here's the output: $ ./DescriptionOfTheIkeaMonkIndex.py _________________________________ Tue Oct 26 22:58:09 2004 REQUEST: <?xml version=3D"1.0" encoding=3D"utf-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV=3D"http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC=3D"http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi=3D"http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd=3D"http://www.w3.org/2001/XMLSchema" xmlns:ZSI=3D"http://www.zolera.com/schemas/ZSI/" SOAP-ENV:encodingStyle=3D"http://schemas.xmlsoap.org/soap/encoding/" = > <SOAP-ENV:Body> <descriptionOfTheIKEAMonkIndexRequest =20 xmlns=3D"http://ikeamonk.ntnu.no/imi.xsd"> </descriptionOfTheIKEAMonkIndexRequest> </SOAP-ENV:Body> </SOAP-ENV:Envelope> _________________________________ Tue Oct 26 22:58:11 2004 RESPONSE: Content-Type: text/xml;charset=3Dutf-8 Transfer-Encoding: chunked Date: Wed, 27 Oct 2004 05:57:18 GMT Server: Apache-Coyote/1.1 <?xml version=3D"1.0" encoding=3D"UTF-8"?> <soapenv:Envelope =20 xmlns:soapenv=3D"http://schemas.xmlsoap.org/soap/envelope/" =20 xmlns:xsd=3D"http://www.w3.org/2001/XMLSchema" =20 xmlns:xsi=3D"http://www.w3.org/2001/XMLSchema-instance"> <soapenv:Body> <descriptionOfTheIKEAMonkIndexResponse =20 xmlns=3D"http://ikeamonk.ntnu.no/imi.xsd">The IKEA Monk Index How much does it cost to buy McDonald=92s well-known Big Mac in a = foreign =20 country, let=92s say in Sweden? The solution is as easy as revealing. =20= The Economist's Big Mac Index does not only give the cost of this basic =20= food commodity in USD for a specific country. It also provides an idea =20= of the value of the particular country=92s currency and its overall =20 economic situation according to the theory of purchasing-power parity. =20= The cost of a local Big Mac is divided by the cost of a Big Mac in the =20= US (in USD) resulting in the implied Purchasing Power Parity (PPP). =20 Under(-) / over(+) valuation against the USD in percent indicates how =20= the local currency are performing in comparison to USD. Under(-) / =20 over(+) valuation is calculated as [[[PPP - Exchange Rate]/Exchange =20 Rate] x 100]. (For further insight into the Economist's Big Mac index =20= please follow this hyperlink: =20 http://www.economist.com/markets/bigmac/displayStory.cfm?=20 story_id=3D2708584) Inspired by this, we have established the IKEA Monk Index as a Web =20 Service to provide the similar information, based on a bundle of IKEA =20= commodities, to polyglots and IKEA lovers. It will give you an idea of =20= how expensive the furnishing of your next downtown apartment in =20 Stockholm, Paris or Berlin will be (in comparison to the US). Since =20 people have different views on the necessities needed to furnish a =20 room, we have chosen to base our index on a bundle of goods that =20 everybody will be able to agree on - the minimalist furnishing of a =20 monk=92s cell. Less is more and all you need to possess in order to =20 furnish a room is a chair, a table and a bed. Thus, the IKEA Monk =20 Index. And the best thing of it all: in contrast to the Economist's Big =20= Mac Index, the IKEA Monk Index is always up to date (it is updated each =20= hour to reflect changing currency rates and any changes in prices in =20 the IKEA online catalogue). This Web Service was established in the Fall of 2004 by three UC =20 Berkeley students (John Ward, Tobias Vogelgsang and Arne Alvern Baste) =20= taking Adam Blum's class 'Web Services: Concepts, Design and =20 Implementation' at the School of Information Managment & Systems. When this description was fetched the current IKEA Monk Index was last =20= updated at 22:29:40 on =20 2004-10-26.</descriptionOfTheIKEAMonkIndexResponse> </soapenv:Body> </soapenv:Envelope> Traceback (most recent call last): File "./DescriptionOfTheIkeaMonkIndex.py", line 14, in ? print response UnicodeEncodeError: 'ascii' codec can't encode character '\u2019' in =20 position 57: ordinal not in range(128) Has anyone else encountered this? (I'm a newbie so it's possible that =20= I'm missing something obvious.) Any help is greatly appreciated. Thanks! John On Oct 26, 2004, at 10:17 PM, Joshua Boverhof wrote: > I think this is the same problem Ivan was having, where the response =20= > is a > 'simple' type. Basically to 'fix' the problem just comment lines 85, = =20 > 86, 87. > > You're expecting a 'str', so the code should be checking > > if not isinstace(response, str): > raise > > -josh > > > * class descriptionOfTheIKEAMonkIndexResponse_Dec(ZSI.TC.String): > literal =3D "descriptionOfTheIKEAMonkIndexResponse" > schema =3D "http://ikeamonk.ntnu.no/imi.xsd"* > >> >> TypeError: <type 'unicode'> incorrect response type >> >> >> The traceback refers to line 87 of the wsdl2py generated class file: >> >> 71 def getDescriptionOfTheIKEAMonkIndexOperation(self, =20 >> request): >> 72 """ >> 73 @param: request to getDescriptionOfTheIKEAMonkIndex:: >> 74 _descriptionOfTheIKEAMonkIndexRequest: =20 >> ns2.DescriptionOfTheIKEAMonkIndexRequest_Def >> 75 >> 76 @return: response is str >> 77 """ >> 78 >> 79 if not isinstance(request, =20 >> getDescriptionOfTheIKEAMonkIndex) and\ >> 80 not issubclass(getDescriptionOfTheIKEAMonkIndex, = =20 >> request.__class__): >> 81 raise TypeError, "%s incorrect request type" =20 >> %(request.__class__) >> 82 kw =3D {} >> 83 response =3D self.binding.Send(None, None, request, =20= >> soapaction=3D"http://ikeamonk.ntnu.no", **kw) >> 84 response =3D =20 >> = self.binding.Receive(getDescriptionOfTheIKEAMonkIndexResponseWrapper()=20= >> ) >> 85 if not isinstance(response, =20 >> getDescriptionOfTheIKEAMonkIndexResponse) and\ >> 86 not =20 >> issubclass(getDescriptionOfTheIKEAMonkIndexResponse, =20 >> response.__class__): >> 87 raise TypeError, "%s incorrect response type" =20= >> %(response.__class__) >> 88 return response >> >> >> Is this an error that anyone else has encountered? What's most =20 >> puzzling is that the other operations, which are constructed =20 >> similarly, do not produce the same error. Any ideas or suggestions =20= >> would be greatly appreciated. >> >> Thanks. >> >> John >> >> >> >> >> >> ------------------------------------------------------- >> This SF.Net email is sponsored by: >> Sybase ASE Linux Express Edition - download now for FREE >> LinuxWorld Reader's Choice Award Winner for best database on Linux. >> http://ads.osdn.com/?ad_idU88&alloc_id=12065&op=CCk >> _______________________________________________ >> Pywebsvcs-talk mailing list >> Pyw...@li... >> https://lists.sourceforge.net/lists/listinfo/pywebsvcs-talk > > |