C#与python交互(flask发送Get/Post请求)

先运行python,再运行C#

**ps: 注意修改端口号**

python发送Get/Post请求

# -*- coding: utf-8 -*- 
# Time : 2024/1/25 15:52 
# Author : YY
# File : post_test.py
# Content:提交数据给客户端
from flask import Flask, request, jsonify, redirect, render_template, url_forapp = Flask(__name__)  # 实例化对象@app.route('/test/stats/', methods=["POST", "GET"])
def display():try:print('request method:', request.method)if request.method == "POST":data = request.get_json()  # 传入的数据print("data:", data)get_id = data.get("id")get_Seconds = int(data.get("Seconds"))if get_id is None or get_Seconds is None:return jsonify(msg="缺少参数")elif get_id == '500' and get_Seconds > 240:r = {'flag': '1'}  # 假设这是你的字典# 检查键 'flag' 是否存在if 'flag' in r:print(r['flag'])  # 如果键存在,则打印对应的值return jsonify(r)else:print("键 'flag' 不存在于字典中。")  # 如果键不存在,则打印错误消息return jsonify({'flag': '0'})else:return jsonify({'error': 'Invalid data'})elif request.method == "GET":return "Hello World!"except Exception as e:print(e)return jsonify(msg="出错了,请查看是否正确访问")if __name__ == '__main__':# app.run()  # 默认本主机访问http://127.0.0.1:5000/# app.run(host="0.0.0.0")  # 任何主机都可以访问app.run(port='5012')  # 修改端口号

C#发送Get/Post请求

using System.Threading.Tasks;
using System.Net.Http;
using System.Collections.Generic;
using Newtonsoft.Json;
using System;
using System.Text;namespace MyFlask
{class Program{//post 上传数据并读取相应内容public async Task<string> PostWebContentAsync(string url){string responseBody = "";HttpClient client = new HttpClient();var values = new Dictionary<string, string>{{"id", "500"},{"Seconds", "250"}};string json = JsonConvert.SerializeObject(values); // 序列化字典var content = new StringContent(json, Encoding.UTF8, "application/json");HttpResponseMessage response = await client.PostAsync(url, content);try{if (response.IsSuccessStatusCode){responseBody = await response.Content.ReadAsStringAsync(); // 读取响应内容// 处理响应内容var jsonResult = JsonConvert.DeserializeObject<dynamic>(responseBody); // 解析JSON// 输出password字段if (jsonResult.flag != null){Console.WriteLine("flag: " + jsonResult.flag);}else{Console.WriteLine("flag not found in the response.");}}else{// 处理错误响应Console.WriteLine($"Error: {response.StatusCode}");}}catch (Exception ex){// 处理异常Console.WriteLine("Exception: " + ex.Message);}Console.WriteLine("非静态任务完成。");return responseBody; // 返回响应内容}//get 获取数据public async Task<string> GetWebContentAsync(string url){string responseContent = "";//Task.Delay(1000).Wait(); // 模拟长时间运行的操作HttpClient client = new HttpClient();HttpResponseMessage response = await client.GetAsync(url); // 发送GET请求try{if (response.IsSuccessStatusCode){responseContent = await response.Content.ReadAsStringAsync(); // 读取响应内容// 处理响应内容System.Console.WriteLine("response:" + response);System.Console.WriteLine("responseContent:" + responseContent);}else{// 处理错误响应Console.WriteLine($"Error: {response.StatusCode}");}}catch (Exception ex){// 处理异常System.Console.WriteLine("Exception:" + ex);}System.Console.WriteLine("非静态任务完成。");return responseContent;}static void Main(string[] args){System.Console.WriteLine("start...");string url = "http://127.0.0.1:5012/test/stats/";Program myInstance = new Program();// 创建MyClass的一个实例//选择flask方式string expression = "post";//string expression = "get";System.Console.WriteLine("执行非静态任务。");// 创建一个Task来执行非静态方法switch (expression){case "post":// 调用非静态方法Task taskPost = myInstance.PostWebContentAsync(url);// 创建一个Task来执行非静态方法taskPost.Wait();// 使用await等待Task完成break;case "get":Task taskGet = myInstance.GetWebContentAsync(url);// 创建一个Task来执行非静态方法taskGet.Wait();// 使用await等待Task完成break;default:// 默认代码块Task task = myInstance.GetWebContentAsync(url);task.Wait();// 使用await等待Task完成break;}//main其他方法System.Console.WriteLine("Main方法继续执行。");System.Console.WriteLine("end...");}}
}

python输出:
在这里插入图片描述

c#输出:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/728976.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

华为OD机试 - 字符串统计(Java 2024 C卷 100分)

目录 专栏导读一、题目描述二、输入描述三、输出描述1、输入2、输出3、说明 四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2024C卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&a…

智慧灯杆-智慧城市照明现状分析(2)

作为城市照明的主体,城市道路照明伴随着我国城市建设的高速发展,获得了快速的增长。国家统计局数据显示,从2004年至2014年,我国城市道路照明灯数量由1053.15万盏增加到3000万盏以上,年均复合增长率超过11%,城市道路照明行业保持持续快速发展的趋势。 近几年,随着中国路灯…

如何排查合并问题——《OceanBase诊断系列》之七

1. 前言 OceanBase数据库的存储引擎以 LSM-Tree 架构为基础&#xff0c;区分静态基线数据&#xff08;存储在只读SSTable&#xff09;和动态增量数据&#xff08;存储在可读写MemTable&#xff09;。其中 SSTable 是只读的&#xff0c;一旦生成就不再被修改&#xff0c;存储于…

C++程序设计-第四/五章 函数和类和对象【期末复习|考研复习】

前言 总结整理不易&#xff0c;希望大家点赞收藏。 给大家整理了一下C程序设计中的重点概念&#xff0c;以供大家期末复习和考研复习的时候使用。 文章目录 前言第四章 函数 函数和类和对象4.1 说明带参数的宏与内联函数有什么不同4.2 全局变量和局部变量有什么区别是怎么实现的…

C语言-----qsort函数的功能以及模拟实现

1.冒泡排序 &#xff08;1&#xff09;冒泡排序就是数据两个两个的进行比较每一趟都是一个数和其他的所有的数字比较&#xff0c; &#xff08;2&#xff09;这个要的是升序排列&#xff0c;所以前面的大的话&#xff0c;就会调换位置 &#xff08;3&#xff09;冒泡排序的缺…

【开源】JAVA+Vue.js实现高校宿舍调配管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能需求2.1 学生端2.2 宿管2.3 老师端 三、系统展示四、核心代码4.1 查询单条个人习惯4.2 查询我的室友4.3 查询宿舍4.4 查询指定性别全部宿舍4.5 初次分配宿舍 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的…

【C语言基础】:深入理解指针(三)

文章目录 深入理解指针一、冒泡排序二、二级指针三、指针数组3.1 指针数组模拟二维数组 四、字符指针变量五、数组指针变量5.1 数组指针变量是什么&#xff1f;5.2 数组指针变量的初始化 六、二维数组传参的本质 深入理解指针 指针系列回顾&#xff1a; 【C语言基础】&#xf…

UOS 与 Ubuntu 命令行打开安装包界面,双击打开界面调用安装包界面展示

UOS 使用deepin-deb-installer安装程序 deepin-deb-installer xxxxxxx.deb & Ubuntu snap-store --local-filename /home/seven/wps-office_1xxxxxxx.deb &

ubuntu20.04安装ros并配置相关环境以及驱动AUBO i5机械臂

ubuntu20.04安装ros并配置相关环境以及驱动AUBO i5机械臂 安装ros安装rosdep(小鱼的rosdepc,又快又好用)环境配置下载并编译aubo roslib库环境变量配置aubo gazeboaubo rviz驱动真实机械臂 安装ros 搜索鱼香ros网站https://fishros.com/&#xff0c;根据一键安装ros里提供的指…

Chromium内核浏览器编译记(四)Linux版本CEF编译

转载请注明出处&#xff1a;https://blog.csdn.net/kong_gu_you_lan/article/details/136508294 本文出自 容华谢后的博客 0.写在前面 本篇文章是用来记录编译Linux版本CEF的步骤和踩过的坑&#xff0c;以防止后续再用到的时候忘记&#xff0c;同时也希望能够帮助到遇到同样问…

Crow 编译和环境搭建

Crow与其说是编译&#xff0c;倒不如说是环境搭建。Crow只需要包含头文件&#xff0c;所以不用编译生成lib。 Crow环境搭建 boost&#xff08;可以不编译boost&#xff0c;只需要boost头文件即可&#xff09;asio &#xff08;可以不编译&#xff0c;直接包含头文件。不能直接…

【Linux】软件管理器yum和编辑器vim

&#x1f525;博客主页&#xff1a; 小羊失眠啦. &#x1f3a5;系列专栏&#xff1a;《C语言》 《数据结构》 《C》 《Linux》 《Cpolar》 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 文章目录 一、Linux下安装软件的方案1.1 源代码安装1.2 rpm安装1.3 yum安装 二、Linux软件…

Spring Boot 配置热部署

前言 对于 Spring Boot 项目之中, 在刚开始学习的时候, 每当代码进行变动的时候, 想要生效那就必须要手动重启. 为什么要重启呢 ? 原因在于写的代码是依靠运行之后的 class 文件运行的, 当我们的代码更新以后, 如果不去手动重启, 那么就无法生成新的 class 文件, 执行的就是旧…

蓝桥杯物联网竞赛_STM32L071_11_知识体系的查漏与补缺

太久没学单片机了&#xff0c;再重新过一遍查漏补缺&#xff0c;对其中之前没怎么在意的&#xff0c;而现在又发觉的问题进行再分析与补充 1. debug serial wire是干什么用的 这个东西我勾选不勾选都对我的程序没有什么影响&#xff0c;我很好奇是干什么用的&#xff0c;网上查…

vue3+elementPlus:el-table-column表格列动态设置单元格颜色

:cell-style属性 //html<el-tableempty-text"暂无数据":data"datalist.table":max-height"height"row-key"id"border:cell-style"cellStyle"> <el-table>//js //动态设置单元格颜色 const cellStyle ({ row, c…

Java后台面试相关知识点解析

文章目录 JavaJava中四种引用类型及使用场景集合HashMap源码及扩容策略HashMap死循环问题ConcurrentHashMap与HashtableConCurrentHashMap 1.8 相比 1.7 判断单链表是否有环&#xff0c;并且找出环的入口IO线程池线程池的几种创建方式判断线程是否可以回收线程池的7大核心参数线…

【MySQL】lower_case_table_names作用及使用

知识点&#xff1a; lower_case_table_names 是mysql设置大小写是否敏感的一个参数。 场景&#xff1a;在使用dataease时&#xff0c;连接外部数据库&#xff0c;启动报错&#xff01;后查看官方文档&#xff0c;特别要求改数据库配置文件&#xff1a;lower_case_table_names …

Mybatis从入门到CRUD到分页到日志到Lombok到动态SQL再到缓存

Mybatis 入门 1.导入maven依赖 <dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>x.x.x</version> </dependency>2.配置核心文件 <?xml version"1.0" encoding"U…

【MySQL知识体系】第1章 初始 MySQL

文章目录 第1章 初始 MySQL1.1 MySQL 介绍1.1.1 什么是 MySQL&#xff1f;1.1.2 MySQL 的特点&#xff1f;1.1.3 MySQL 默认端口&#xff1f; 1.2 安装 MySQL1.2.1在MacOS上安装MySQL1.2.2 在Windows上安装MySQL 1.3 如何选择 MySQL 客户端1.3.1 在MacOS上安装Workbench1.3.2 在…

【吊打面试官系列】Java虚拟机JVM篇 - 三道最简单最常问的JVM面试题

大家好&#xff0c;我是锋哥。今天分享三道最简单最常问的JVM面试题&#xff0c;希望对大家有帮助&#xff1b; 一&#xff0c;请问JDK与JVM有什么区别&#xff1f; 简单来说&#xff1a; 1. JVMJava 运行器&#xff1b; 2. JREJVM Java 基础&核心类库&#xff1b; 3. JD…