python3 http.client/server post传输json问题

 更新时间:2023年09月05日 17:13:26   作者:LyFxyy  
这篇文章主要介绍了python3 http.client/server post传输json问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

任务:

自己写一个http.server/client传输json格式数据

从网上东拼西凑攒出来的,已经调通了。(PS:想感谢两位贴源码的大神,但是找不到原网页在哪了,抱歉!)

上代码:

http server端

from http.server import HTTPServer, BaseHTTPRequestHandler
import json
class Resquest(BaseHTTPRequestHandler):
    def do_POST(self):
        print(self.headers)
        print(self.command)
        req_datas = self.rfile.read(int(self.headers['content-length'])) 
        print("--------------------接受client发送的数据----------------")
        res1 = req_datas.decode('utf-8')
        res = json.loads(res1)
        print(res)
        print("--------------------接受client发送的数据------------------")
        data1 = {'bbb':'222'}
        data = json.dumps(data1)
        self.send_response(200)
        self.send_header('Content-type', 'application/json')
        self.end_headers()
        self.wfile.write(data.encode('utf-8'))
if __name__ == '__main__':
    host = ('localhost', 8888)
    server = HTTPServer(host, Resquest)
    print("Starting server, listen at: %s:%s" % host)
    server.serve_forever()

http client 端:

import http.client, urllib.parse
import json
diag1 = {'aaa':'111'} #要发送的数据 ,因为要转成json格式,所以是字典类型
data = json.dumps(diag1)
headers = {"Content-type": "application/x-www-form-urlencoded", "Accept": "text/plain"}
conn = http.client.HTTPConnection('localhost', 8888)
conn.request('POST', '/ippinte/api/scene/getall', data.encode('utf-8'), headers)#往server端发送数据
response = conn.getresponse()
stc1 = response.read().decode('utf-8')#接受server端返回的数据
stc = json.loads(stc1)
print("-----------------接受server端返回的数据----------------")
print(stc)
print("-----------------接受server端返回的数据----------------")
conn.close()

运行结果:

server端(client to server)

clien

client端(server back client)

对于json应用的例子

首先要知道的是type(json) = str,传输的时候也是以字符串格式传输,但其形式是字典:{‘aaa’:‘bbb’}。

在我的项目中,先利用json.dump()将字典转成json格式

dict1 = {'aaa':'111'}
jstr = json.dumps(dict1)

此时,我们看到的type(jstr) = str

在client给server传输的时候,要将json转成字节流

jstr1 = jstr.encode('utf-8')

在server端接受到的client端消息的时候就要解码

jstr2 = jstr1.decode('utf-8')

然后再将json转为字典类型

jstr3 = json.loads(jstr2)

总结

打完收工~

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • python异常基类BaseException详解

    python异常基类BaseException详解

    这篇文章主要为大家介绍了python异常基类BaseException详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • 安装Python和pygame及相应的环境变量配置(图文教程)

    安装Python和pygame及相应的环境变量配置(图文教程)

    下面小编就为大家带来一篇安装Python和pygame及相应的环境变量配置(图文教程)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • Python趣味挑战之用pygame实现飞机塔防游戏

    Python趣味挑战之用pygame实现飞机塔防游戏

    一步步实现有趣的飞机塔防游戏,有兴趣了解一下吗?文中有非常详细的代码示例,对喜欢玩游戏的小伙伴们很有帮助哦,需要的朋友可以参考下
    2021-05-05
  • 从np.random.normal()到正态分布的拟合操作

    从np.random.normal()到正态分布的拟合操作

    这篇文章主要介绍了从np.random.normal()到正态分布的拟合操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • 深入理解最新Python中的Match Case

    深入理解最新Python中的Match Case

    最近发布的 Python 3.10 的所有主要新特性中最重要就是 Match-Case 语法,本文将带你深入探讨,会发现 Match-Case 其实没有那么简单
    2021-11-11
  • 详解如何利用tushare、pycharm和excel三者结合进行股票分析

    详解如何利用tushare、pycharm和excel三者结合进行股票分析

    这篇文章主要介绍了详解如何利用tushare、pycharm和excel三者结合进行股票分析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • python爬虫框架scrapy下载中间件的编写方法

    python爬虫框架scrapy下载中间件的编写方法

    这篇文章主要介绍了python爬虫框架scrapy下载中间件,在每一个scrapy工程中都有一个名为 middlewares.py 的文件,这个就是中间件文件,本文通过示例代码给大家介绍的非常详细,需要的朋友参考下吧
    2022-03-03
  • Python Matplotlib库安装与基本作图示例

    Python Matplotlib库安装与基本作图示例

    这篇文章主要介绍了Python Matplotlib库安装与基本作图,简单分析了Python使用pip命令安装Matplotlib库及绘制三角函数曲线的相关操作技巧,需要的朋友可以参考下
    2019-01-01
  • Python函数的参数列表解析

    Python函数的参数列表解析

    这篇文章主要介绍了Python函数的参数列表,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • Python pygorithm模块用法示例【常见算法测试】

    Python pygorithm模块用法示例【常见算法测试】

    这篇文章主要介绍了Python pygorithm模块用法,结合实例形式分析了pygorithm模块的功能、安装及针对常见算法的相关使用操作技巧,需要的朋友可以参考下
    2018-08-08

最新评论