def post_multipart(host, selector, fields, files): content_type, body = encode_multipart_formdata(fields, files) h = client.HTTP(host) h.putrequest('POST', selector) h.putheader('Host', host) h.putheader('Content-Type', content_type) h.putheader('Content-Length', str(len(body))) h.endheaders() h.send(body) errcode, errmsg, headers = h.getreply() return h.file.read()
def make_connection(self, host): self.realhost = host return httplib.HTTP(self.proxy)
def upload(self, array, fields=None, table="MyDB", configfile=None): """ Upload an array to a personal database using SOAP POST protocol. http://skyserver.sdss3.org/casjobs/services/jobs.asmx?op=UploadData """ wsid='' password='' if configfile is None: configfile = "CasJobs.config" logger.info("Reading config file: %s"%configfile) lines = open(configfile,'r').readlines() for line in lines: k,v = line.strip().split('=') if k == 'wsid': wsid = v if k == 'password': password = v logger.info("Attempting to drop table: %s"%table) self.drop(table) SOAP_TEMPLATE = """ <soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"> <soap12:Body> <UploadData xmlns="http://Services.Cas.jhu.edu"> <wsid>%s</wsid> <pw>%s</pw> <tableName>%s</tableName> <data>%s</data> <tableExists>%s</tableExists> </UploadData> </soap12:Body> </soap12:Envelope> """ logger.info("Writing array...") s = io.StringIO() np.savetxt(s,array,delimiter=',',fmt="%.10g") tb_data = '' if fields is not None: tb_data += ','.join(f for f in fields)+'\n' tb_data += s.getvalue() message = SOAP_TEMPLATE % (wsid, password, table, tb_data, "false") #construct and send the header webservice = httpcl.HTTP("skyserver.sdss3.org") webservice.putrequest("POST", "/casjobs/services/jobs.asmx") webservice.putheader("Host", "skyserver.sdss3.org") webservice.putheader("Content-type", "text/xml; charset=\"UTF-8\"") webservice.putheader("Content-length", "%d" % len(message)) webservice.endheaders() logger.info("Sending SOAP POST message...") webservice.send(message) # get the response statuscode, statusmessage, header = webservice.getreply() print("Response: ", statuscode, statusmessage) print("headers: ", header) res = webservice.getfile().read() print(res)