On Thu, Jun 13, 2013 at 5:56 PM, Matthew Ashton
<matthew.ashton3(a)gmail.com>wrote:
---------- Forwarded message ----------
From: Matthew Ashton <matthew.ashton3(a)gmail.com>
Date: Thu, Jun 13, 2013 at 10:55 AM
Subject: Re: [Fedora-suds-list] Location attribute not found error
To: Surya Kasturi <kasturisurya(a)gmail.com>
It sounds like you may need to check the server that handles these SOAP
calls.
Perhaps you could see that requests / responses come through by checking
the client object after making a request, you print client.last_sent() and
client.last_received()
also, if you need to debug what suds is sending, it sounds like a great
opportunity to look in the debug section of the documentation
https://fedorahosted.org/suds/wiki/Documentation#LOGGING
looks like enabling the suds.transport logging would help a lot
On Thu, Jun 13, 2013 at 3:45 AM, Surya Kasturi <kasturisurya(a)gmail.com>wrote:
>
>
>
> On Wed, Jun 12, 2013 at 5:26 PM, Matthew Ashton <
> matthew.ashton3(a)gmail.com> wrote:
>
>> Wait, this line (it's line 75 in the unmodified file)
>> request = Request(suds_method.client.location, request_text)
>>
>> needs to become
>>
>> request = Request(suds_method.method.location, request_text)
>>
>> because the location attribute is under the method attribute... of the
>> suds method.
>>
>> The script was written 3 years ago so having things change over time
>> makes sense.
>>
>>
>> On Wed, Jun 12, 2013 at 4:24 AM, Surya Kasturi
<kasturisurya(a)gmail.com>wrote:
>>
>>>
>>>
>>>
>>> On Wed, Jun 12, 2013 at 12:57 AM, Matthew Ashton <
>>> matthew.ashton3(a)gmail.com> wrote:
>>>
>>>> line 75 of
>>>>
https://fedorahosted.org/suds/attachment/ticket/350/soap_attachments.2.py
>>>> says
>>>>
>>>> request = Request(suds_method.client.location(), request_text)
>>>>
>>>> well the suds method (Which would be c.service.*something)* doesn't
>>>> have a location attribute under client.
>>>> instead it is under method, so it should be
>>>>
>>>> request = Request(suds_method.method.location, request_text)
>>>>
>>>>
>>>> On Tue, Jun 11, 2013 at 5:47 PM, Matthew Ashton <
>>>> matthew.ashton3(a)gmail.com> wrote:
>>>>
>>>>> No... see the documentation. I just wanted to make sure the client
>>>>> objects was set up... so something like
>>>>> from suds.client import Client
>>>>> url="./abc?wsdl"
>>>>> self.client = Client(url=url)
>>>>>
>>>>> works.
>>>>>
>>>>>
>>>>> *location* This overrides the service port address *URL* defined in
>>>>> the WSDL.
>>>>>
>>>>> The service port address defined in the WSDL should look like (here
>>>>> is from fedex's testing wsdl)
>>>>> <service name="ShipService">
>>>>> <port name="ShipServicePort"
binding="ns:ShipServiceSoapBinding">
>>>>> <s1:address location="
>>>>>
https://wsbeta.fedex.com:443/web-services/ship"/>
>>>>> </port>
>>>>> </service>
>>>>>
>>>>> and I know why it's failing.. it's because there's no
.location()
>>>>> under a client (line 75)... and I'm trying to find where you can
access it
>>>>>
>>>>>
>>>>> On Tue, Jun 11, 2013 at 1:01 PM, Surya Kasturi <
>>>>> kasturisurya(a)gmail.com> wrote:
>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Tue, Jun 11, 2013 at 7:42 PM, Matthew Ashton <
>>>>>> matthew.ashton3(a)gmail.com> wrote:
>>>>>>
>>>>>>> location is a keyword argument attribute you can specify at
the
>>>>>>> creation of the client object used to make the service calls,
or change
>>>>>>> later through a method call setlocation (
>>>>>>>
http://jortel.fedorapeople.org/suds/doc/suds.wsdl.Service-class.html)
>>>>>>>
>>>>>>> According to the suds documentation (
>>>>>>>
https://fedorahosted.org/suds/wiki/Documentation )
>>>>>>> *location* This overrides the service port address *URL*
defined
>>>>>>> in the WSDL. So I was just making sure you set up the client
>>>>>>> object properly
>>>>>>>
>>>>>>>
>>>>>>> On Tue, Jun 11, 2013 at 12:25 PM, Surya Kasturi <
>>>>>>> kasturisurya(a)gmail.com> wrote:
>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Tue, Jun 11, 2013 at 7:21 PM, Matthew Ashton <
>>>>>>>> matthew.ashton3(a)gmail.com> wrote:
>>>>>>>>
>>>>>>>>> But the question was what did you do to fix the
'location' issue?
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Tue, Jun 11, 2013 at 12:12 PM, Surya Kasturi <
>>>>>>>>> kasturisurya(a)gmail.com> wrote:
>>>>>>>>>
>>>>>>>>>> Thanks...
>>>>>>>>>> We have used a similar method to send data as
string and its
>>>>>>>>>> working! But the string is of size 250kb and we
don't want that large data
>>>>>>>>>> to be sent as a single string
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Tue, Jun 11, 2013 at 5:27 PM, Matthew Ashton
<
>>>>>>>>>> matthew.ashton3(a)gmail.com> wrote:
>>>>>>>>>>
>>>>>>>>>>> I'm assuming you've properly set up
the client to make the web
>>>>>>>>>>> service call? I'll look into the ticket
you linked.
>>>>>>>>>>>
>>>>>>>>>>> On Tue, Jun 11, 2013 at 7:43 AM, Surya
Kasturi <
>>>>>>>>>>> kasturisurya(a)gmail.com> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> I am using with_soap_attachment()
mentioned at
>>>>>>>>>>>>
https://fedorahosted.org/suds/ticket/350
>>>>>>>>>>>>
>>>>>>>>>>>> def sendFile(self, vehicleId,
filePath):
>>>>>>>>>>>> uploadFileMethod =
self.client.service.uploadFile
>>>>>>>>>>>> attachment_id =
hashlib.sha256(filePath).hexdigest()
>>>>>>>>>>>> attachment_content = (filePath,
attachment_id)
>>>>>>>>>>>>
with_soap_attachment(uploadGpxFileMethod,
>>>>>>>>>>>> attachment_content)
>>>>>>>>>>>>
>>>>>>>>>>>> this what my method is..
>>>>>>>>>>>>
>>>>>>>>>>>> Now, I am getting the error
>>>>>>>>>>>>
>>>>>>>>>>>> AttributeError: 'Client' object
has no attribute 'location'
>>>>>>>>>>>> Error: tcpip::Socket::recvAndCheck @
recv: peer shutdown
>>>>>>>>>>>>
>>>>>>>>>>>> SoapAttachment.py", line 75, in
with_soap_attachment
>>>>>>>>>>>>
>>>>>>>>>>>> So, how to fix it?? I need to attach file
and send it..As this
>>>>>>>>>>>> interface needs to be done asap it would
be nice if someone can let me know
>>>>>>>>>>>> what is the issue here
>>>>>>>>>>>>
>>>>>>>>>>>> thanks
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
_______________________________________________
>>>>>>>>>>>> suds mailing list
>>>>>>>>>>>> suds(a)lists.fedoraproject.org
>>>>>>>>>>>>
https://admin.fedoraproject.org/mailman/listinfo/suds
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>> the location attribute line was something like
>>>>>>>>
>>>>>>>> suds_method.client.location() which is supposed to work
and since
>>>>>>>> the attr is not present, its raising.
>>>>>>>>
>>>>>>>> So, I manually edited that argument and replaced with the
server
>>>>>>>> wsdl url
>>>>>>>> ( I am quite new in the team and new to soap.. I hope its
right!!
>>>>>>>> putting wsdl url)
>>>>>>>>
>>>>>>>> but, after that its raising error. "internal server
fault" or
>>>>>>>> something.. I am away from the codebase now and thus
can't give you
>>>>>>>> appropriate details :(
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>> Okay, as far as I remember (I don't have code base right
now)
>>>>>>
>>>>>> the Client instance is created like this
>>>>>>
>>>>>> url = "localhost://...//abc?wsdl"
>>>>>> self.client = Client(url)
>>>>>>
>>>>>> and you are saying that we can do something like
>>>>>>
>>>>>> self.client = Client(location = url)
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>
>>> First let me give you some clear picture!
>>>
>>> The client program (Python) instance is something like this
>>>
>>> def __init__(self):
>>> self.initClient()
>>>
>>> def initClient(self):
>>> try:
>>> self.client = Client(url)
>>> except:
>>> ..
>>>
>>> This is where I am actually calling the remote method
>>>
>>> def sendLogFile(self, filePath):
>>> import hashlib
>>>
>>> uploadFileMethod = self.client.service.uploadFile
>>> attachment_id = hashlib.sha256(filePath).hexdigest()
>>> attachment_mimetype = "text/plain"
>>> attachment_content = (filePath, attachment_id,
>>> attachment_mimetype)
>>> with_soap_attachment(uploadFileMethod, attachment_content)
>>>
>>> This is raising
>>>
>>>
>>> AttributeError: 'Client' object has no attribute 'location'
>>> Error: tcpip::Socket::recvAndCheck @ recv: peer shutdown
>>> Quitting (on error).
>>>
>>> On the server side, which is written in JSP, has a method
>>>
>>> String uploadFile(File logFile);
>>>
>>> and the WSDL definitions something like below
>>>
>>> <wsdl:service name="WebService">
>>> <wsdl:port name="WebServiceHttpSoap11Endpoint"
>>> binding="ns:WebServiceSoap11Binding">
>>> <soap:address location="
>>>
http://localhost:8080/myserver/services/WebService.WebServiceHttpSoap11En...
>>>
>>> </wsdl:port>
>>> <wsdl:port name="WebServiceHttpSoap12Endpoint"
>>> binding="ns:WebServiceSoap12Binding">
>>> <soap12:address location="
>>>
http://localhost:8080/myserver/services/WebService.WebServiceHttpSoap12En...
>>> "/>
>>> </wsdl:port>
>>> <wsdl:port name="WebServiceHttpEndpoint"
>>> binding="ns:WebServiceHttpBinding">
>>> <http:address location="
>>>
http://localhost:8080/myserver/services/WebService.WebServiceHttpEndpoint/
>>> "/>
>>> </wsdl:port>
>>> </wsdl:service>
>>>
>>>
>>> I guess I have created the Client() instance succesfully but its
>>> raising the above mentioned errors.
>>>
>>>
>>> As per your previous message, I even changed the line 77 in
>>> with_soap_attachment to
>>>
>>> request = Request(suds_method.client.location, request_text)
>>>
>>>
>>> Thanks for your valuable time.
>>>
>>>
>>
> Hey, thanks.. but there seems to be other errors raising too.
>
> This is the method I am running
>
> def sendFile(self, filePath):
> uploadFileMethod = self.client.service.uploadFile
> attachment_id = uuid.uuid4()
> attachment_mimetype = "text/plain"
> attachment_content = (open(filePath, "rb"), attachment_id,
> attachment_mimetype)
> with_soap_attachment(uploadFileMethod, attachment_content)
>
> I am getting this error
>
> File "soap_attachments.py", line 69, in with_soap_attachment
> '--%s--' % boundary_id
> TypeError: sequence item 6: expected string, file found
>
>
> My remote method is this
>
> String uploadFile(File my_file);
>
> I don't understand why its not taking the file object
>
>
> But, anyway, I changed the method above mentioned line5 to
>
> attachment_content = (open(filePath, "rb").read(), attachment_id,
> attachment_mimetype)
>
> The below line sends the string!!
>
> Now, I am getting this error
>
> File
>
"/usr/local/lib/python2.7/dist-packages/suds-0.4-py2.7.egg/suds/transport/https.py",
> line 64, in send
> return HttpTransport.send(self, request)
> File
>
"/usr/local/lib/python2.7/dist-packages/suds-0.4-py2.7.egg/suds/transport/http.py",
> line 85, in send
> raise TransportError(e.msg, e.code, e.fp)
> suds.transport.TransportError: Internal Server Error
>
> Error: tcpip::Socket::recvAndCheck @ recv: peer shutdown
> Quitting (on error).
>
>
> Thanks a lot for your time!!
>
> Surya
>
_______________________________________________
suds mailing list
suds(a)lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/suds
Okay..
One think I notice is that, when ever I invoke the client method, I see
some log going on the Server side... I guess, the method is invoking the
server..
The below is the error on server side..
can you tell me onething..
should I send file as
open(filepath, "rb") --or
open(filepath, "rb").read() ---> this one string.. how can we assume as
attachment.
[ERROR] org/apache/james/mime4j/MimeException
java.lang.NoClassDefFoundError: org/apache/james/mime4j/MimeException
at org.apache.axiom.attachments.Attachments.<init>(Attachments.java:93)
at
org.apache.axis2.builder.BuilderUtil.createAttachments(BuilderUtil.java:592)
at
org.apache.axis2.builder.BuilderUtil.createAttachmentsMap(BuilderUtil.java:543)
at
org.apache.axis2.builder.MIMEBuilder.processDocument(MIMEBuilder.java:39)
at
org.apache.axis2.transport.TransportUtils.createDocumentElement(TransportUtils.java:179)
at
org.apache.axis2.transport.TransportUtils.createSOAPMessage(TransportUtils.java:145)
at
org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:167)
at
org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:146)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.ClassNotFoundException:
org.apache.james.mime4j.MimeException
at
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
at
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
... 22 more
[ERROR] org/apache/james/mime4j/MimeException
java.lang.NoClassDefFoundError: org/apache/james/mime4j/MimeException
at org.apache.axiom.attachments.Attachments.<init>(Attachments.java:93)
at
org.apache.axis2.builder.BuilderUtil.createAttachments(BuilderUtil.java:592)
at
org.apache.axis2.builder.BuilderUtil.createAttachmentsMap(BuilderUtil.java:543)
at
org.apache.axis2.builder.MIMEBuilder.processDocument(MIMEBuilder.java:39)
at
org.apache.axis2.transport.TransportUtils.createDocumentElement(TransportUtils.java:179)
at
org.apache.axis2.transport.TransportUtils.createSOAPMessage(TransportUtils.java:145)
at
org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:167)
at
org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:146)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.ClassNotFoundException:
org.apache.james.mime4j.MimeException
at
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
at
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
... 22 more