python 字典字符串转字典——urllib.request.Request发送get,post请求,发送json参数

Bertha 。 2023-06-17 13:52 85阅读 0赞

1.eval方法即可【字典字符串转字典】
file_content = eval(file_content)

2.urllib.request.Request发送post请求,发送json参数

  1. from urllib.request import Request, urlopen
  2. import json
  3. 调用代码片段:
  4. url = 'http://www.abc.1201t.com/api-sss/tdd/woRegulationCreate'
  5. header = {
  6. 'tokenStr': "MTc2OF90b2tlbl8xNTQxNDg5NjA3MzYxLCwsMTU0MTQ4OTYwNzM2MQ==",
  7. 'Content-Type': 'application/json'
  8. }
  9. post_data = {"evType": "曳引与强制驱动电梯",
  10. "groupName": "半月保养(国际)",
  11. "memo": "hui",
  12. "count": "31/31",
  13. "regullations":
  14. [
  15. {"name": "清洁",
  16. "desc": "机房清洁",
  17. "state": "1"}
  18. ]
  19. }
  20. # post_data = urlencode(post_data).encode('utf-8')
  21. req = Request(url=url, data=json.dumps(post_data).encode('utf-8'), headers=header, method='POST')
  22. file_content = urlopen(req).read().decode('utf-8')
  23. print(type(file_content))
  24. print(file_content)

亲测可行

20191129104046803.png

备注:以下是get方式和post方式请求数据

  1. from urllib.request import Request, urlopen
  2. from urllib.parse import quote, urlencode
  3. import json
  4. from module.api_test.log_util import log
  5. success_code = 0 # 请求成功的返回code
  6. url = 'http://172.16.2.74:8080/workOrder/detail'
  7. params = None
  8. header = {
  9. 'Authorization': "MTc2OF90b2tlbl8xNTQzMjg1MjAyMDU3LCwsMTU0MzI4NTIwMjA1Nw==",
  10. 'Content-Type': 'application/json'
  11. }
  12. post_body = {}
  13. def post_api(url, params: dict, header: dict, post_body: dict):
  14. """
  15. 尝试POST方式请求接口
  16. :param url:
  17. :param params:
  18. :param header:
  19. :param post_body:
  20. :return:
  21. """
  22. if header and "Content-Type" in header.keys() and header['Content-Type'] == 'application/json': # 请求参数是json
  23. req = Request(url=url, data=json.dumps(post_body).encode('utf-8'), headers=header, method='POST')
  24. else: # 请求参数是map
  25. params = urlencode(params).encode('utf-8') # 编码请求参数
  26. req = Request(url=url, data=params, headers=header, method='POST')
  27. process_result(req)
  28. def get_api(url, params: dict, header: dict):
  29. """
  30. 尝试GET方式请求接口
  31. :param url:
  32. :param params: quote(params[key], safe='/', encoding='utf-8', errors=None) 防止中文编码错误问题
  33. :param header:
  34. :return:
  35. """
  36. get_params = None
  37. if params:
  38. for key in params.keys():
  39. if params[key]:
  40. if not get_params:
  41. get_params = "?" + quote(key, safe='/', encoding='utf-8', errors=None) + "=" + quote(params[key],
  42. safe='/',
  43. encoding='utf-8',
  44. errors=None)
  45. else:
  46. get_params += "&" + quote(key, safe='/', encoding='utf-8', errors=None) + "=" + quote(params[key],
  47. safe='/',
  48. encoding='utf-8',
  49. errors=None)
  50. if get_params:
  51. url += get_params
  52. if header:
  53. req = Request(url=url, headers=header, method='GET')
  54. else:
  55. req = Request(url=url, method='GET')
  56. process_result(req)
  57. def process_result(req):
  58. """
  59. 处理请求返回结果
  60. :param req:
  61. :return:
  62. """
  63. result_content = None
  64. try:
  65. result_content = urlopen(req).read().decode('utf-8')
  66. result_content = json.loads(result_content)
  67. if result_content['code'] and not result_content['code'] == success_code:
  68. log('------操作失败------')
  69. log('request_url:' + url)
  70. log('request_params:' + str(params))
  71. log('response:' + str(result_content))
  72. else:
  73. log('------操作成功------')
  74. log(str(result_content))
  75. except Exception as excp:
  76. log('------请求异常------')
  77. log('request_url:' + url)
  78. log('request_params:' + str(params))
  79. log('response:' + str(result_content))
  80. log('error:' + str(excp))
  81. if __name__ == '__main__':
  82. # url = "http://172.16.2.74:8080/elevator/getEvList"
  83. # params = {'cityId': "2282", "projectName": "花满楼", "page": "1", "pageSize": "11"}
  84. # get_api(url, params, header)
  85. # url = 'http://172.16.2.74:8080/alarm/wxAlarm'
  86. # params = {
  87. # "description": "",
  88. # "evId": "197363018554679296",
  89. # "openId": "o8xzN0eBwTNVYbnbxF7qf5H928gw",
  90. # "trap": 1
  91. # }
  92. # post_api(url,params,header,params)
  93. url = 'http://api.mmtt.ojict.com/api-elorr/elevatorInfo/updateElevatorFileNumber'
  94. header = {
  95. 'tokenStr': "MTc2OF90b2tlbl8xNTQzMzk4NzEzMDUyLCwsMTU0MzM5ODcxMzA1Mg=="
  96. }
  97. params = {
  98. "evId": "197363018554679296",
  99. "fileNumber": "o8xzN0eBwTNVYbnbxF7qf5H928gw"
  100. }
  101. post_api(url, params, header, params)

————————————————
版权声明:本文为CSDN博主「风正吹」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yingtian648/article/details/83788638

发表评论

表情:
评论列表 (有 0 条评论,85人围观)

还没有评论,来说两句吧...

相关阅读