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="
</wsdl:port>
<wsdl:port name="WebServiceHttpSoap12Endpoint"
binding="ns:WebServiceSoap12Binding">
<soap12:address location="
"/>
</wsdl:port>
<wsdl:port name="WebServiceHttpEndpoint"
binding="ns:WebServiceHttpBinding">
<http:address location="
"/>
</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.