python3.4.3 调用http接口 解析response xml后插入数据库

工作中需要调用一个http的接口,等不及java组开发,就试着用python去调用。Python版本3.4.3

完整的流程包括:从sqlServer取待调用的合同列表 -> 循环调用http接口 -> 将response写入xml文件 -> 解析xml -> 插入oracle数据库

要去公司旅游了,先把代码放着,以后再详细解释记录一下。

#!/usr/bin/python3
import time
import pymssql
import urllib.parse
import httplib2
import os.path
import xml.etree.ElementTree
import cx_Oracle

v_curr_datetime = time.strftime(‘%Y%m%d%H%M%S‘, time.localtime(time.time()))
print (‘Step1: ‘ + v_curr_datetime)

##连接sqlServer,获得请求xml,写入txt文件#########################
#conn_req = pymssql.connect(host="***",user="***",password="***",database="***",charset = "utf8")
conn_req = pymssql.connect(host="***",user="",password="",database="ods",charset = "utf8")
cur_req = conn_req.cursor()

v_file_name_req = ‘requestList.txt‘
f_req = open(v_file_name_req, ‘w‘)
f_req = open(v_file_name_req, ‘r+‘)
f_req.truncate()

v_sql_req = "SELECT Loan_No,request_xml FROM if_haier_loan_contract_list"
cur_req.execute(v_sql_req)
rows = cur_req.fetchall()
for row_req in rows:
    #row_req = row_req[0]+‘||‘+row_req[1]+‘\n‘
    row_req = row_req[0] + ‘||‘ + ‘kfs;serv10000100056;‘ + row_req[1] + ‘\n‘
    print(row_req)
    f_req.write(row_req)

f_req.close()
cur_req.close()
conn_req.close()

print (‘Step2: ‘ +  time.strftime(‘%Y%m%d%H%M%S‘, time.localtime(time.time())))

##循环得到的xml文件,逐个调用还款计划接口,解析后存到数据库##############
f_read = open(‘requestList.txt‘, ‘r‘)
for v_row_read in f_read:
    v_row_read = v_row_read.split(‘||‘)
    print (‘当前调用xml: ‘ + v_row_read[1])
    http = httplib2.Http()
    url = ‘http://***‘   

    #body_str =‘kfs;serv10000100056; <?xml version="1.0" encoding="gb2312" standalone="yes"?><msgbody><serviceId>serv10000100056</serviceId><GEN_GL_NO>1257393</GEN_GL_NO><LOAN_NO>HCF-CSCP20150708702904001</LOAN_NO><APP_USER_ID>01400515</APP_USER_ID><APP_USER_NAME>xxx</APP_USER_NAME><APP_USER_ORG_NO>0010</APP_USER_ORG_NO><ENQ_TYP>ALL</ENQ_TYP></msgbody>‘
    body_str = v_row_read[1]
    headers = {‘Content-type‘: ‘application/x-www-form-urlencoded‘}
    print (‘*‘*30)
    ##请求接口数据#################
    response, content = http.request(url, ‘POST‘, headers=headers, body=body_str)
    ##将xml头的gb2312替换成utf-8###
    print (‘*‘*20)
    v_response = content.decode("utf-8").replace(‘encoding=\"gb2312\"‘,‘encoding=\"utf-8\"‘)

    ##将response生成xml文件#######
    v_file_name = v_row_read[0] + ‘.xml‘
    f = open(v_file_name, ‘w‘)
    f.truncate()
    f.write(v_response)
    f.write(‘\n‘)
    f.close()

    ##读取xml####################
    root=xml.etree.ElementTree.parse(v_file_name)
    ##连接数据库##################
    connMAPP = cx_Oracle.connect("user","password","tnsname")
    cur1 = connMAPP.cursor()

    ##将数据写入数据库#############
    #book=root.findall(‘MX‘)
    book=root.iter(‘MX‘)
    for book_list in book:
        #print (‘=‘*20)
        v_row = []
        for note in book_list:
            v_temp = v_row.append(note.text)
        #v_row = v_row.split(‘,‘)
        #print (v_row)

        v_sql = " insert into temp_py values (%(v0)s,to_date(\‘%(v1)s\‘,‘YYYY-MM-DD‘)) "%{‘v0‘:v_row[0],‘v1‘:v_row[1]}
        #print (v_sql)
        cur1.execute(v_sql)

    ##commit后关闭数据库连接
    connMAPP.commit()
    cur1.close()
    connMAPP.close()
    print (‘Step3: ‘ +  time.strftime(‘%Y%m%d%H%M%S‘, time.localtime(time.time())))
时间: 2024-11-12 07:02:56

python3.4.3 调用http接口 解析response xml后插入数据库的相关文章

python3调用NowAPI接口实现二维码生成工具

本人python学习菜鸟一枚,随着对python的学习,感觉python越来越好玩了,上次用接口查询IP地址后,又看到有道词典查询.二维码生成等接口相关的方法,并对其做了简单的尝试,确实是挺好玩的.所以将整个过程记录下来.分享在此,供大家一起交流学习. 1.基本环境 系统:windows 7 开发环境:pycharm python3 相关的模块和库  urlib  urllib.parse 2.NowAPI简单的介绍 NowAPI是一家 数据服务公司,提供大量的数据接口,对于我们这种学习的菜鸟来

Java调用WebService 接口 实例

这里给大家介绍一下,Java调用webservice的一个实例的过程. 本项目不能运行,因为接口地址不可用. 这里只是给大家介绍一个过程,同时留作自己的笔记.如果要学习,可以参照别人的实例.比较好. ①选择项目根目录的src ,右键,new --> webservice client 然后输入地址: http://172.18.100.52:456/hello?wsdl 必须要加wsdl结尾,这样才是一个webservice的接口. finlish.这时候刷新项目.可以看到项目下/src/com

php中创建和调用webservice接口示例

这篇文章主要介绍了php中创建和调用webservice接口示例,包括webservice基本知识.webservice服务端例子.webservice客户端例子,需要的朋友可以参考下 作为开发者来讲,要想写webservice接口或者调用别人的webservice接口,首先需要了解什么是webservice.简单说, WebService就是一些站点开放一些服务出来, 也可以是你自己开发的Service, 也就是一些方法, 通过URL,指定某一个方法名,发出请求,站点里的这个服务(方法),接到

C# 调用API接口处理公共类 自带JSON实体互转类

using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Net.Security; using System.Security.Cryptography.X509Certificates; using System.Text; using System.Threading.Tasks; using System.Web; n

远程调用内核接口的封装类(RCKObjs)

RCK 包含 Application, Function, Connection, Command, Response 和 Fields 六 大类, 其主要功能如下: a. Application 类主要负责 Function 的组织和 Response 的分发执行: b. Function    类主要负责 Function 的定义及按各模式调用: c. Connection  类主要负责登录对端应用, Command 请求执行, Response 应答管理, 以及发送和接收数据等等: d.

python使用suds调用webservice接口

最近做接口对接,遇到了.net开发的webservice接口,因为python第一次与webservice对接,连问带查,最后使用suds库来实现了 1.安装suds mac: sudo pip install suds linux: easy_install suds 也可以通过去官网下载suds代码,再本地安装 2. 引用初始化 1 >>> from suds.client import Client 2 >>> url = 'http://www.gpsso.co

C#/Java 调用WSDL接口及方法

一.C#利用vs里面自带的"添加web引用"功能: 1.首先需要清楚WSDL的引用地址  如:http://www.webxml.com.cn/Webservices/WeatherWebService.asmx 2.在.Net项目中,添加web引用. 3.在弹出页面中,输入URL->点击点击绿色图标(前往)按钮->自定义引用名->点击添加引用 4.添加成功,查看类中可调用的方法: 5.在项目中,调用wsdl中的方法. [csharp] view plain copy

本页面用来演示如何通过JS SDK,创建完整的QQ登录流程,并调用openapi接口

QQ登录将用户信息存储在cookie中,命名为__qc__k ,请不要占用 __qc__k : 1) :: 在页面顶部引入JS SDK库: 将"js?"后面的appid参数(示例代码中的:100229030)替换成您自己的appid: 示例代码:<script type="text/javascript" src="http://qzonestyle.gtimg.cn/qzone/openapi/qc_loader.js" data-app

C# 调用Java接口

最近工作任务中包含了系统之间数据的互通,当然就考虑系统互相开通接口来实现通信了! 作为.NET的开发者,还没有调用过Java接口的经历,惭愧惭愧! 话不多说,直接进入正题! 调用webservice接口,.NET最快的方法是什么? 1,当然是添加服务引用了! 填上WSDL地址,代码中new一个xxxxClient对象,找到方法,传入参数,得到结果,very easy! 2,用SvcUtil生成代理类,在Visual Studio工具中找到它! 什么?你找不到?那你去别处找找如何添加它吧,嘿嘿!