当前位置: 首页 > news >正文

python 做网站教程php语言 网站建设

python 做网站教程,php语言 网站建设,罗湖外贸网站建设,开发板是什么文章目录 一、接口请求二、二进制请求与响应GET 请求POST 请求 三、关于图片的请求四、Python调用WebService接口五、Python HmacSHA1 加密与签名 一、接口请求 http 请求包含#xff1a;请求行、请求头、请求体。【关于详情】 http协议报文 1.请求报文 (请求行/请求头/请… 文章目录 一、接口请求二、二进制请求与响应GET 请求POST 请求 三、关于图片的请求四、Python调用WebService接口五、Python HmacSHA1 加密与签名 一、接口请求 http 请求包含请求行、请求头、请求体。【关于详情】 http协议报文 1.请求报文 (请求行/请求头/请求数据/空行)请求行   请求方法字段、URL字段和HTTP协议版本  例如GET/index.htmlHTTP/1.1    get方法将数据拼接在url后面传递参数受限  请求方法    GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT 请求头(keyvalue形式)   User-Agent产生请求的浏览器类型。  Accept客户端可识别的内容类型列表。  Host主机地址 请求数据   post方法中会把数据以keyvalue形式发送请求 空行   发送回车符和换行符通知服务器以下不再有请求头2.响应报文 (状态行、消息报头、响应正文)状态行消息报头响应正文 request import requestsr requests.get(https://api.github.com/events) # 获取网页信息 r requests.post(http://httpbin.org/post, data {key:value}) # 发送信息请求r requests.put(http://httpbin.org/put, data {key:value}) r requests.delete(http://httpbin.org/delete) r requests.head(http://httpbin.org/get) r requests.options(http://httpbin.org/get)payload {key1: value1, key2: value2} r requests.get(http://httpbin.org/get, paramspayload)print(r.url) # 有返回则URL已被正确编码 print(r.text) # 推测的文本编码 print(r.content) # 找到 HTTP 和 XML自身可以指定编码格式文本编码 print(r.encoding) # 常用于中文乱码解决。用于修改编码方式使用 codecs 模块进行注册Requests 也可以使用定制的编码 创建了自己的编码如r.encoding ‘ISO-8859-1’ 并使用 codecs 模块进行注册你就可以轻松地使用这个解码器名称作为 r.encoding 的值 然后由 Requests 来为你处理编码。 关于【响应中文乱码问题请点击】。 二、二进制请求与响应 GET 请求 以请求返回的二进制数据保存图片保存文件。 import requests from PIL import Image from io import BytesIOurl https://api.github.com/some/endpoint headers {user-agent: my-app/0.0.1} r requests.get(url, headersheaders)i Image.open(BytesIO(r.content))with open(filename, wb) as fd:for chunk in r.iter_content(chunk_size):fd.write(chunk)POST 请求 import requestspayload {key1: value1, key2: value2}r requests.post(http://httpbin.org/post, datapayload) # 简单地传递一个字典给 data 参数 r requests.post(url, datajson.dumps(payload)) # 传递str 而不是dict数据会被直接发布出去。 print(r.text) print(r.content) print(r.url) print(r.status_code)多部分编码(Multipart-Encoded)的文件 url http://httpbin.org/post files {file: open(report.xls, rb)}# 显式地设置文件名文件类型和请求头 files {file: (report.xls, open(report.xls, rb), application/vnd.ms-excel, {Expires: 0})}# 发送作为文件来接收的字符串 files {file: (report.csv, some,data,to,send\nanother,row,to,send\n)} r requests.post(url, filesfiles)建议你用二进制模式(binary mode)打开文件。这是因为 Requests 可能会试图为你提供 Content-Length header在它这样做的时候这个值会被设为文件的字节数bytes。如果用文本模式(text mode)打开文件就可能会发生错误。 最好先用二进制的形式打开文件将其编码成base64来进行传输 a open(pdf_reference.pdf, rb).read().encode(base64) 带参数带请求头 小示例 import requests import jsonurl http://official-account/app/messages/group body {type: text, content: text, tag_id: 20717} headers {content-type: application/json, Authorization: APP appid 4abf1a,token 9480295ab2e2eddb8}response requests.post(url, data json.dumps(body), headers headers)三、关于图片的请求 图片和二进制格式互转 # 以 二进制方式 进行图片读取 with open(img.jpg,rb) as f:img_bin f.read() # 以二进制方式读取的图片内容# 将 图片的二进制内容 转成 真实图片 with open(img.jpg,wb) as f:f.write(img_bin) # img_bin里面保存着二进制流的图片内容图片转成字节数组 image2bytearray 我打印了这两者输出有些微差别可以都试一下 import io from PIL import Image# 方法一 img Image.open(rC:\Users\xxx\Desktop\111.png, moder)imgByteArr io.BytesIO() img.save(imgByteArr, formatpng)imgByteArr imgByteArr.getvalue() print(imgByteArr:,imgByteArr)# 方法二 data open(rC:\Users\xxx\Desktop\111.png, rb).read() print(bytearray:,bytearray(data))安装依赖pip3 install Pillow from io import BytesIO from PIL import Image import requestsres requests.get(http://p1.pstatp.com/list/300x196/pgc-image/152923179745640a81b1fdc.webp, streamTrue) # 获取字节流最好加stream这个参数 byte_stream BytesIO(res.content) # 把请求到的数据转换为Bytes字节流(这样解释不知道对不对可以参照[廖雪峰](https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431918785710e86a1a120ce04925bae155012c7fc71e000)的教程看一下)roiImg Image.open(byte_stream) # Image打开Byte字节流数据imgByteArr io.BytesIO() # 创建一个空的Bytes对象 roiImg.save(imgByteArr, formatPNG) # PNG就是图片格式我试过换成JPG/jpg都不行 imgByteArr imgByteArr.getvalue() # 这个就是保存的图片字节流# 写入本地 with open(./abc.png, wb) as f:f.write(imgByteArr)# 方法三 img Image.open(BytesIO(byte_stream)) img.save(save_name img.format, quality95)img Image.open(BytesIO(byte_stream)) img.save(save_name img.format, quality95)img Image.frombytes(RGB, (18,18), img) # 图片格式图片大小图片数据流 img.save(111.png)四、Python调用WebService接口 关于WebService查看【wiki网址】。 Python的WebService开发库是soaplib。 【关于开发示例】 Suds: 是一个轻量级的SOAP客户端suds-jurko是suds的一个分支版本。 sudshttps://pypi.org/project/suds/ 最近维护时间: Sep 15, 2010 suds-jurko 0.4.1.jurko.2https://pypi.org/project/suds-jurko/0.4.1.jurko.2/最近维护时间:Dec 25, 2011 安装 pip install suds 安装pip install suds-jurko0.4.1.jurko.2 免费的webserver网址http://www.webxml.com.cn/zh_cn/web_services.aspx 测试工具 接口使用cxf编写SoapUI 5.2.1下载地址测试查看1。测试查看2。 也可以用Webservice测试工具 Storm测试。 #encoding:utf-8 import json from suds.client import Client# import logging # logging.basicConfig(levellogging.INFO) # logging.getLogger(suds.client).setLevel(logging.DEBUG)# username api_user # password api_pwdurlhttp://192.168.18.74/api/Calculator/soap11/description headers {Content-Type: application/soapxml; charsetUTF-8}client Client(url,headersheaders,faultsFalse,timeout15)def call_api_test(num1,num2):try:#--WSDL请求Header----------------------------------------------# auth client.factory.create(AuthenticationInfo)# auth.userName username# auth.password password# client.set_options(soapheadersauth)#--WSDL请求Body----------------------------------------------result client.service.add(anum1,bnum2)if result[0] 200:return (True, result[1])else:return (False, result[1])except Exception as e:return (False, e)if __name__ __main__: #get_softwarea call_api_test(2,3)print (json.loads(a[1]))python3测试一个小案例 from suds.client import Clienturl http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx?wsdlclient Client(url) #创建Webservice Client对象 print(client) #打印出Client对象所有的方法result client.service.qqCheckOnline(xxxxxxxx) #使用client.service.qqCheckOnline方法 print(结果为result)suds-community 0.8.4https://pypi.org/project/suds-community/ 最近维护时间: Dec 22, 2019 安装pip install suds-community from suds.client import Client# 连接到webservice服务获取查询天气服务方法 client Client(http://ws.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl) print(client) 报错suds.TypeNotFound: Type not found: # 解决错误 from suds.client import Client from suds.xsd.doctor import ImportDoctor, Import# 导入正确的命名空间。 imp Import(http://www.w3.org/2001/XMLSchema, locationhttp://www.w3.org/2001/XMLSchema.xsd) imp.filter.add(http://WebXml.com.cn/) doctor ImportDoctor(imp) client Client(http://ws.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl, doctordoctor) print(client)五、Python HmacSHA1 加密与签名 #!/usr/bin/env python3 # -*- coding: utf-8 -*-import json import math import os import io import requests import time import datetime import hashlib import codecs import uuid import tracebackdef testapi():appkey 5daexxxx #这里输入提供的app_keyappsecret dcf85ca2a9a2c1dfe3e45905xxxxxxxx #这里输入提供的app_secretapi_url https://xxxx/v1/item/xxxximage_url http://xxxxt/img/sample.jpgresult {}try:timestamp int(time.time()) # generate timestampm hashlib.md5()token appkey str(timestamp) appsecretm.update(token.encode(utf-8))token m.hexdigest() # generate token# post requestdata {image_url: image_url, app_key: appkey, timestamp: str(timestamp), token: token}r requests.post(api_url, datadata)if r.status_code ! 200:print(failed to get info from : , image_url)else:result r.json()print(result)except:traceback.print_exc()return resultif __name__ __main__:testapi()import requests, json import base64 import time import hmac import hashlib import osdef get_img(img_paths):img_list []for paths,dirs,filenames in os.walk(img_paths):for filename in filenames:if filename.endswith(.jpg):img_list.append(paths/filename)return img_listdef POST(img_path):api_url http://192.168.x.x:8000/xx/xx/xxxxencryptKey xxzkudjZIGM/KbppeVSTemJpMErh31xx/xxwith open(img_path, rb) as f:base64_data base64.b64encode(f.read())imgdata base64_data.decode()params {appId:xxxxxxxxxxx,data: {imgBase64:imgdata},format: json,noncestr: sdkfhjsdjkfsdgf,timestamp: time.strftime(%Y-%m-%d %H:%M:%S, time.localtime()),version: V1.0}encryptText appIdparams[appId]data{imgBase64:params[data][imgBase64]\}formatjsonnoncestrxxxxxxtimestampparams[timestamp]versionV1.0print(encryptText)sign base64.b64encode(hmac.new(bytes(encryptKey,utf-8), bytes(encryptText,utf-8), digestmodsha1).digest())r requests.post(api_url, sign)print(r)print(r.status_code)print(r.json)if __name__ __main__:img_path ./201920100013253001_30302_02.jpgPOST(img_path)python2.7post请求示例 # -*- coding: utf-8 -*- import urllib import urllib2 import mimetools, mimetypes import os import json import sys import shutil import base64def get_files(input_path):file_list []for root,dirs,filenames in os.walk(input_path):for filename in filenames:if filename.endswith((.jpg,.tif,.jpeg,.png,.JPG,.TIF,.JPEG,.PNG)):file_list.append(root/filename)return file_listclass Callable:def __init__(self, anycallable):self.__call__ anycallableclass MultipartPostHandler(urllib2.BaseHandler):handler_order urllib2.HTTPHandler.handler_order - 10 # needs to run firstdef http_request(self, request):data request.get_data()if data is not None and type(data) ! str:v_files []v_vars []try:for key, value in data.items():if type(value) file:v_files.append((key, value))else:v_vars.append((key, value))except TypeError:systype, value, traceback sys.exc_info()raise TypeError, not a valid non-string sequence or mapping object, tracebackif len(v_files) 0:data urllib.urlencode(v_vars, 1)else:boundary, data self.multipart_encode(v_vars, v_files)contenttype multipart/form-data; boundary%s % boundaryif request.has_header(Content-Type) \and request.get_header(Content-Type).find(multipart/form-data) ! 0:print Replacing %s with %s % (request.get_header(content-type), multipart/form-data)request.add_unredirected_header(Content-Type, contenttype)request.add_data(data)return requestdef multipart_encode(vars, files, boundaryNone, bufferNone):if boundary is None:boundary mimetools.choose_boundary()if buffer is None:buffer for key, value in vars:buffer --%s\r\n % boundarybuffer Content-Disposition: form-data; name%s % keybuffer \r\n\r\n value \r\nfor key, fd in files:filename os.path.basename(fd.name)contenttype mimetypes.guess_type(filename)[0] or application/octet-streambuffer --%s\r\n % boundarybuffer Content-Disposition: form-data; name%s; filename%s\r\n % (key, filename)buffer Content-Type: %s\r\n % contenttypefd.seek(0)buffer \r\n fd.read() \r\nbuffer --%s--\r\n\r\n % boundaryreturn boundary, buffermultipart_encode Callable(multipart_encode)https_request http_requestclass Verify_Code_Test:def __init__(self):self.data {channel_num: TEST, file_id: , file_content: }def image_2_string(self, img_path):try:self.data[file_id] img_path.split(/)[-1]with open(img_path, rb) as rf:data0 rf.read()image_base64 base64.b64encode(data0)self.data[file_content] image_base64.decode()return Trueexcept Exception as e:print(str(e))return Falsedef verify_code(self, img_path):if self.image_2_string(img_path):opener urllib2.build_opener(MultipartPostHandler)data json.dumps(self.data)resp opener.open(http://127.0.0.1:5000/verify_code, data)print resp.read()if __name__ __main__:verify_code_test Verify_Code_Test()verify_code_test.verify_code(./images/icbc.png)参考与鸣谢 字节数组 https://www.cnblogs.com/fieldtianye/p/8276552.html http://2.python-requests.org/zh_CN/latest/user/quickstart.html http://2.python-requests.org/zh_CN/latest/user/advanced.html#advanced https://blog.csdn.net/qq_22034353/article/details/94398536
http://www.hkea.cn/news/14390988/

相关文章:

  • 在酒店做那个网站好山药云搭建网站
  • 餐饮行业网站建设风格网上商城系统流程图
  • php做的网站论文河南网站制作公司
  • 同一个ip网站太多 seo广东省农业农村厅官网首页
  • 分析对手网站什么是黄页
  • 企业网站模板科技感手机网站制作报价
  • 做运营需要看的网站别人帮做的网站到期续费
  • 国家住房和城乡建设部网站查询wordpress 3.3.1
  • 黔西南北京网站建设wordpress 标签 404
  • 西安建设工程信息平台搜索引擎优化推广
  • 郑州做手机网站建设天猫优惠卷怎么做网站
  • 公司网站建设外包网站建设网络推广平台
  • 都用什么软件做网站品牌网是什么
  • 南通做网站软件浏览网站时弹出的广告是谁给做的
  • 重庆好的推广网站哈尔滨企业网站排名
  • WordPress建立电商网站广告图片
  • php 用什么做网站服务器有名的网页游戏
  • 山东网站备案拍照二手网站专业做附近人的有吗
  • 百度手机助手下载安卓企业网站seo优化公司
  • 做网站到底要不要备案建设门户网站多少钱
  • 用jquery做网站丽江市企业网站
  • 哈尔滨住房和城乡建设局网站网站建设合同是否属于技术服务合同
  • 网站建设评比办法济南品牌网站建设介绍
  • 小说网站制作网站制作多少
  • 网站建设公司推荐互赢网络php网站设计要学多久
  • 网站修改用什么工具电子商务就业岗位
  • 中国水电建设集团港航建设有限公司网站成品网站源码1688的优势
  • 用ps做的网站怎么发布wordpress自动生成密码
  • 土特产网站建设状况响应式网站模板html5
  • 菏泽定制网站建设推广seo研究协会网