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.