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_for

app = 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.mfbz.cn/a/438543.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java 学习和实践笔记(30):继承树的追溯

如上图所示&#xff0c;在上图中&#xff0c; 在最下面的子类Husky(哈士奇&#xff09;中&#xff0c;假定要查找一个变量或者方法h, 那么其查找顺序属性/方法查找顺序是这样的&#xff1a; 首先&#xff0c;查找当前类中有没有属性h 如果没有&#xff0c;则依次往上上溯每个…

Nodejs 18.19.0 基本环境搭建(无版本管理)

简介 记录一次安装Nodejs的过程, 及设置install 安装路径等… 基本安装及设置步骤 1. 下载Nodejs并安装 NodeJs 18.19.0 LTS Windows安装msi, 下载后安装在自己想要的路径, 例如 D:\Softwares\Dev_Tools\nodejs cmd 中输入 nodejs version 可以查看版本 2. 设置 npm config ls…

Object.defineproperty

Object.defineproperty 的作用就是直接在一个对象上定义一个新属性&#xff0c;或者修改一个已经存在的属性.。并返回此对象。 Object.defineproperty 参数 Object.defineproperty方法需要传递3个参数Object.defineproperty&#xff08;obj, prop, desc &#xff09; 参数1…

【微信小程序】屏幕适配

在网页中一般是使用 rem 单位&#xff0c;它能够根据html的字号大小自动改变尺寸&#xff0c;开发者可以动态的计算屏幕尺寸&#xff0c;然后根据屏幕大小的不同设置html的字号 小程序解决适配使用 rpx 单位&#xff0c;它能够根据屏幕大小自动进行转换。 每一个机型的宽度和高…

Python实例☞数据类型及运算符案例

实例一&#xff1a; ❶要求☞从键盘获取一个4位整数&#xff0c;并分别输出个、十、百、千位 ❷程序代码☞ ①第一种方法 print(请输入一个4位整数&#xff1a;) xeval(input()) print(个位数为&#xff1a;,x%10) print(十位数为&#xff1a;,(x//10)%10) print(百位数为&am…

第一次捡垃圾

配置 cpu e3 1225 v6 淘宝 130 显卡 p106-100(1060矿卡的特称) 咸鱼 118 内存 8g 3200频率 2 咸鱼 702140 硬盘 128g 固态 咸鱼 35 主板 ex-b150m-v3 咸鱼 110 电源 400w 咸鱼 58 4热管cpu散热器 咸鱼 28 机箱 迷你 拼多多 28 电源线 1m5 淘宝 8 pcie转m.2 拼多多 9 编程器 用…

关于Vue3的一些操作

1. 设置浏览器自动打开 在package.json 中设置 dev: vite --open 2.给src文件夹配置别名 在vite.config.ts配置文件中添加以下内容 3. 如果2中有红色波浪线的问题 ***安装一个文件包***npm install types/node3. 在tsconfig.json配置文件中&#xff0c;找到配置项compi…

凌鲨微应用开发流程

微应用开发流程 使用vite,nextjs等框架创建前端项目引入需要的api包通过调试界面进行调试 创建前端项目 vite yarn create vitenextjs yarn create next-app引入需要的api包 名称权限说明http跨域访问跨域http访问tauri提供的apilinksaas-minapp/api打开浏览器读本地文件…

无法更新下载安装升级谷歌浏览器Chrome无法更新至最新版本怎么解决下载更新谷歌浏览器?

谷歌Chrome浏览器有新版本chrome可用&#xff0c;点击后无法更新chrome至最新版本&#xff0c;造成每次在电脑上打开谷歌chrome浏览器都会提示更新&#xff0c;重新安装chrome又无法打开谷歌浏览器官方网站。 谷歌浏览器Chrome无法更新至最新版本怎么办&#xff1f; 1、百度搜…

社区店运营方案分享:从推广到盈利的实战经验

对于想要开实体店或创业的朋友们&#xff0c;社区店是一个具有很大发展潜力的选择。 作为一名鲜奶吧5年的创业者&#xff0c;我将分享一些从推广到盈利的实战经验&#xff0c;希望能给大家提供有价值的参考。 1、市场调研&#xff1a; 在开店之前&#xff0c;深入了解社区的…

挑战杯 基于深度学习的水果识别 设计 开题 技术

1 前言 Hi&#xff0c;大家好&#xff0c;这里是丹成学长&#xff0c;今天做一个 基于深度学习的水果识别demo 这是一个较为新颖的竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f9ff; 更多资料, 项目分享&#xff1a; https://gitee.com/dancheng-senior/pos…

【自动驾驶系列丛书学习】2.《自动驾驶汽车环境感知》学习笔记

《自动驾驶技术概论》学习笔记 致谢&#xff1a;作者&#xff1a;甄先通、黄坚、王亮、夏添 -------------------------------------------------------------------------------------------------------- 笔记目录 -----------------------------------------------------…

1911_野火FreeRTOS教程阅读笔记_请求任务切换

1911_野火FreeRTOS教程阅读笔记_请求任务切换 全部学习汇总&#xff1a; g_FreeRTOS: FreeRTOS学习笔记 (gitee.com) 还有一部分任务切换请求的代码没有分析。 实现上是一个宏定义&#xff0c;实现的工作主要的核心点还是请求PendSV的exception。当这个调用的时候&#xff0c;下…

基于Spring Boot的图书个性化推荐系统 ,计算机毕业设计(带源码+论文)

源码获取地址&#xff1a; 码呢-一个专注于技术分享的博客平台一个专注于技术分享的博客平台,大家以共同学习,乐于分享,拥抱开源的价值观进行学习交流http://www.xmbiao.cn/resource-details/1765769136268455938

消息队列的原理与基本使用

文章目录 消息队列定义优点 与 缺点优点缺点常见的消息队列 消息队列的配置消息队列的简单使用生产者消费者运行 消息队列 定义 消息队列&#xff08;message queue&#xff09;是一种用于在软件系统中传输、存储和处理消息的机制。它通常用于异步通信&#xff0c;允许不同的组…

机器学习:探索计算机的自我进化之路

当我们谈论机器学习时&#xff0c;我们在谈论什么呢&#xff1f;机器学习是一门跨学科的学科&#xff0c;它使用计算机模拟或实现人类学习行为&#xff0c;通过不断地获取新的知识和技能&#xff0c;重新组织已有的知识结构&#xff0c;从而提高自身的性能。简单来说&#xff0…

导数与微分错题本

《1800》 1 缺乏构造函数的技巧 2 3 等价无穷小构造函数 4 这个构造有点难。补充几个数字构造导数定义 5 6 通过举例子排除真的好 7 8 我不想输 9 注意自变量为x的平方 10 导数对应的x为y的变量 11 代入定义式 12 13 14 15 16 17 18 19 20

php调用guzzlehttp库时出现Segmentation fault的解决方案

先说结论&#xff0c;这个问题的原因是因为php7.4与openssl3不兼容产生的&#xff0c;解决方案如下&#xff1a; 输入openssl version -a查看openssl版本&#xff0c;如果是3以上的版本与php7.4不兼容&#xff0c;7.4以下的没测试过&#xff0c;估计也有问题。我最终是安装上了…

日韩媒体宣传案例分析:CloudNEO 为您提供海外媒体宣传最佳途径

近年来&#xff0c;随着互联网的迅速发展和全球化的加速推进&#xff0c;海外市场对于企业的重要性日益凸显。尤其是在亚洲地区&#xff0c;日本和韩国作为亚洲最具活力和潜力的市场之一&#xff0c;成为众多企业争相开拓的目标。在这个过程中&#xff0c;媒体宣传不仅是企业推…

【机器学习】详解正则化思想

我们的生活当中真正有意义或者有价值的部分可以概括为两句话&#xff1a;一句话是&#xff1a;弄清楚某个东西是怎么一回事&#xff0c;另一句话是&#xff0c;弄清楚某个东西是怎么一回事。头一句话&#xff0c;我们弄清楚的那个东西对于我们而言是未知的&#xff0c;但是已经…
最新文章