---------- Forwarded message ----------
From: Matthew Ashton <matthew.ashton3@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@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 lotOn Thu, Jun 13, 2013 at 3:45 AM, Surya Kasturi <kasturisurya@gmail.com> wrote:
On Wed, Jun 12, 2013 at 5:26 PM, Matthew Ashton <matthew.ashton3@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@gmail.com> wrote:
On Wed, Jun 12, 2013 at 12:57 AM, Matthew Ashton <matthew.ashton3@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@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@gmail.com> wrote:On Tue, Jun 11, 2013 at 7:42 PM, Matthew Ashton <matthew.ashton3@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 )So I was just making sure you set up the client object properly
- location
- This overrides the service port address URL defined in the WSDL.
On Tue, Jun 11, 2013 at 12:25 PM, Surya Kasturi <kasturisurya@gmail.com> wrote:
On Tue, Jun 11, 2013 at 7:21 PM, Matthew Ashton <matthew.ashton3@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@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 stringOn Tue, Jun 11, 2013 at 5:27 PM, Matthew Ashton <matthew.ashton3@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@gmail.com> wrote:
_______________________________________________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 hereNow, I am getting the errorI am using with_soap_attachment() mentioned at https://fedorahosted.org/suds/ticket/350this what my method is..
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)
AttributeError: 'Client' object has no attribute 'location'
Error: tcpip::Socket::recvAndCheck @ recv: peer shutdown
SoapAttachment.py", line 75, in with_soap_attachment
thanks
suds mailing list
suds@lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/suds
the location attribute line was something likesuds_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 thisurl = "localhost://...//abc?wsdl"self.client = Client(url)and you are saying that we can do something likeself.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 hashlibattachment_mimetype = "text/plain"
uploadFileMethod = self.client.service.uploadFile
attachment_id = hashlib.sha256(filePath).hexdigest()
attachment_content = (filePath, attachment_id, attachment_mimetype)
with_soap_attachment(uploadFileMethod, attachment_content)This is raisingQuitting (on error).
AttributeError: 'Client' object has no attribute 'location'
Error: tcpip::Socket::recvAndCheck @ recv: peer shutdownOn 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.WebServiceHttpSoap11Endpoint/"/>
</wsdl:port>
<wsdl:port name="WebServiceHttpSoap12Endpoint" binding="ns:WebServiceSoap12Binding">
<soap12:address location="http://localhost:8080/myserver/services/WebService.WebServiceHttpSoap12Endpoint/"/>
</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 foundMy remote method is thisString uploadFile(File my_file);I don't understand why its not taking the file objectBut, 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@lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/suds