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.hqwc.cn/news/521518.html

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

相关文章

【嵌入式——QT】标准对话框

【嵌入式——QT】标准对话框 文件对话框颜色对话框字体对话框输入对话框消息框代码示例 文件对话框 QFileDialog 常用静态函数 getOpenFileName&#xff1a;选择打开一个文件&#xff1b;getOpenFileNames&#xff1a;选择打开多个文件&#xff1b;getSaveFileName&#xff1…

WPF 消息提示 类似toast方式

WPF里面的消息提示一般都是MessageBox.Show()&#xff0c;这种样式不是很好看&#xff0c;所以就想办法重新搞了一个类似弹出消息的功能。原理很简单&#xff0c;就是弹出一个新窗体&#xff0c;然后等几秒窗体自动关闭。 先上效果图&#xff1a; 新建一个MsgHelper.cs类&…

Linux运维工程师不可或缺的10款工具

运维工程师在日常工作中频繁运用的10款工具&#xff0c;并细致阐述每款工具的功能、适用场景以及其卓越之处。 1. Shell脚本&#xff1a; 功能&#xff1a;主要用于自动化任务和批处理作业。 适用场景&#xff1a;频繁用于文件处理、系统管理、简单的网络管理等操作。 优势&…

重生奇迹mu战士大师技能加点怎么加

1、在重生奇迹MU中&#xff0c;战士大师的技能加点需要根据个人的游戏风格和需求来决定。一般来说&#xff0c;战士大师可以优先加点力量和体力&#xff0c;以增加攻击和生存能力。同时&#xff0c;可以适当加点敏捷来提高闪避和命中率。 2、在技能方面&#xff0c;可以根据个人…

云计算项目九:K8S安装

K8S安装 Kube-master安装 按照如下配置准备云主机 防火墙相关配置&#xff1a;禁用selinux&#xff0c;禁用swap&#xff0c;且在firewalld-*。上传kubernetes.zip 到跳板机 配置yum仓库&#xff08;跳板机&#xff09; 跳板机主机配置k8s软件源服务端 [rootjs ~]# yum -y…

5G工业网关是什么?

随着科技的飞速发展&#xff0c;5G技术已经逐渐渗透到我们生活的方方面面。而在工业领域&#xff0c;5G工业网关作为连接工业设备与网络的关键组件&#xff0c;正发挥着越来越重要的作用。HiWoo Box其5G工业网关产品以其卓越的性能和稳定性&#xff0c;正助力企业实现数字化转型…

考研数学|到底要不要做张宇《1000题》

根据你自身能力来选择真正适合你的题集&#xff0c;最后的做题效果会加倍。&#x1f60e; 我先分析一下张宇1000题集的特点&#xff0c;张宇1000更适合基础不错&#xff0c;想冲刺高分的同学。 1000分为强化和提高&#xff0c;是没有基础部分的&#xff0c;着重考察数学概念和技…

@大学生必看内容!QT创建C++项目,并使用Opencv进行图像处理!

一、创建C项目 二、向C项目部署opencv。详细步骤&#xff1a;查看地址。 避坑&#xff01;&#xff01;

ChatGPT 升级出现「我们未能验证您的支付方式/we are unable to authenticate」怎么办?

ChatGPT 升级出现「我们未能验证您的支付方式/we are unable to authenticate」怎么办&#xff1f; 在订阅 ChatGPT Plus 时&#xff0c;有时候会出现以下报错 &#xff1a; We are unable to authenticate your payment method. 我们未能验证您的支付方式。 出现 unable to a…

连接kafka报错:java.io.IOException: Can‘t resolve address:

修改电脑host文件:C:\Windows\System32\drivers\etc\hosts 加上一行 192.168.1.XXX MHA_SLAVE2&#xff08;192.168.1.XXX 这个是安装kafka 的服务器地址&#xff0c;MHA_SLAVE2是kafka的容器id&#xff09;

(实用)如何在vscode设置自己的代码片段,提高开发效率

项目背景 很多时候&#xff0c;我们新建vue文件的时&#xff0c;都需要把重复的代码结构重新输入或者copy过来&#xff0c;对开发效率照成影响。&#x1f62b; 可以通过键入关键词 vue3 快速生成代码片段 构建效果 操作步骤 在vscode左下角&#xff0c;点击设置按钮&#xff0…

4月9日至10日Hack.Summit 2024亚洲首秀:Web3开发者齐聚香港数码港

Hack.Summit() 是一系列 Web3 开发者大会。本届活动将于 2024 年 4 月 9 日至 4 月 10 日在香港数码港举行。自十年前首次举办以来&#xff0c;此次会议标志着 Hack.Summit() 首次在亚洲举办&#xff0c;香港被选为首次亚洲主办城市&#xff0c;这对 Hack VC 和该地区都具有重要…