If there's a connection refusal error it could be that the port you're trying to access on the server is blocked..
or your credentials are incorrect... are you able to access port 443 (for HTTPS) or port 80 (for HTTP)?
The below is the traceback!!Hi, You were right on the dot.. There was a problem with Server which I fixed it and tested using soapui and its working.Now, I am running the script but the problem is still there.
File "/media/sf_surya-workspace/SumoVehicleGPSLoggerPython/src/SoapAttachment.py", line 70, in with_soap_attachment
response = suds_method.client.options.transport.send(request)File "/usr/local/lib/python2.7/dist-packages/suds-0.4-py2.7.egg/suds/transport/http.py", line 77, in send
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)
fp = self.u2open(u2request)
File "/usr/local/lib/python2.7/dist-packages/suds-0.4-py2.7.egg/suds/transport/http.py", line 118, in u2open
return url.open(u2request, timeout=tm)
File "/usr/lib/python2.7/urllib2.py", line 401, in open
response = self._open(req, data)
File "/usr/lib/python2.7/urllib2.py", line 419, in _open
'_open', req)
File "/usr/lib/python2.7/urllib2.py", line 379, in _call_chain
result = func(*args)
File "/usr/lib/python2.7/urllib2.py", line 1211, in http_open
return self.do_open(httplib.HTTPConnection, req)
File "/usr/lib/python2.7/urllib2.py", line 1181, in do_open
raise URLError(err)
urllib2.URLError: <urlopen error [Errno 111] Connection refused>The following headers I have mentioned explicitly in soapuiContent-Type: text/xml; charset=UTF8This is the response headers from soapui
Transfer-Encoding chunked
Date Mon, 17 Jun 2013 08:46:01 GMT
#status# HTTP/1.1 200 OK
Content-Type multipart/related; boundary="MIMEBoundary_f3eeffa96390b51859789ae9a2d4ade84a7dcf209ffe1c2d"; type="text/xml"; start="<0.e3eeffa96390b51859789ae9a2d4ade84a7dcf209ffe1c2d@apache.org>"
Server Apache-Coyote/1.1I dont know where the problem and why is it happening with this script..ThanksSurya
On Thu, Jun 13, 2013 at 6:53 PM, Matthew Ashton <matthew.ashton3@gmail.com> wrote:You should send the file as open(filepath, "rb").read() as you are sending it in an HTTP request... on the server side it should expecting that field to be a file though
On Thu, Jun 13, 2013 at 11:35 AM, Surya Kasturi <suryak@ieee.org> wrote:
On Thu, Jun 13, 2013 at 5:56 PM, Matthew Ashton <matthew.ashton3@gmail.com> wrote:
---------- 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/sudsOkay..
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 asopen(filepath, "rb") --oropen(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
_______________________________________________
suds mailing list
suds@lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/suds