
C# HttpWebRequest使用 结合Flask作为后端进行展示
创建请求:使用 设置方法:指定HTTP方法为GET。 发送请求:调用 读取响应内容:使用StreamReader读取响应流内容。 创建参数字典:用于存储GET参数。 拼接URL:将参数按格式追加到URL末尾。 处理URL编码:确保特殊字符正确编码。 发送请求并读取响应:与不带参数的GET请求类似操作。 设计界面:创建用户界面,包含按钮和输入框。 引用必要命名空间:确保所有必要的类被引用。 调用HTTP方法:在按钮点击事件中调用之前编写的GET或POST方法。 显示结果:在成功获取响应后显示结果。
发布日期:2021-05-14 15:07:19
浏览次数:21
分类:精选文章
本文共 5665 字,大约阅读时间需要 18 分钟。
在C#中发送HTTP请求可以通过HttpWebRequest
类来实现。以下是详细说明:
不带参数的GET请求
HttpWebRequest.Create
方法创建请求对象。GetResponse
方法获取WebResponse对象。using System;using System.IO;using System.Net;namespace ConsoleApp1{ class Program { static void Main(string[] args) { HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("http://127.0.0.1:8001/test/"); req.Method = "GET"; HttpWebResponse res; try { res = (HttpWebResponse)req.GetResponse(); } catch (WebException ex) { res = (HttpWebResponse)ex.Response; } StreamReader sr = new StreamReader(res.GetResponseStream(), Encoding.UTF8); string content = sr.ReadToEnd(); Console.WriteLine(content); } }}
带参数的GET请求
using System;using System.Collections.Generic;using System.IO;using System.Net;namespace http_test{ class Program { static void Main(string[] args) { Dictionaryparam = new Dictionary (); param.Add("source", "D:/source/target.dicm"); param.Add("operation", "1"); param.Add("destination", "D:/destination/target.dicm"); string url = "http://127.0.0.1:5000/test2"; string result = HttpTest.GET(url, param); Console.WriteLine(result); } } public class HttpTest { public static string GET(string url, Dictionary param) { if (param != null) { StringBuilder queryBuilder = new StringBuilder(url.Contains("?") ? "" : "?"); foreach (var item in param) { queryBuilder.Append(item.Key); queryBuilder.Append("="); queryBuilder.Append(System.Uri.EscapeUriComponent(item.Value)); queryBuilder.Append("&"); } url = queryBuilder.ToString().Substring(0, queryBuilder.Length - 1); } HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = "GET"; HttpWebResponse res; try { res = (HttpWebResponse)request.GetResponse(); } catch (WebException ex) { res = (HttpWebResponse)ex.Response; } StreamReader sr = new StreamReader(res.GetResponseStream(), Encoding.UTF8); return sr.ReadToEnd(); } }}
Flask后端示例
from flask import Flask, request, url_forfrom flask_restful import Api, Resource, reqparseimport base64app = Flask(__name__)api = Api(app)class TestView(Resource): def get(self): return {"message": "Testing GET method"} def post(self): data = request.get_json() # Process the data return {"success": True}@app.route("/file", methods=["POST"])def fileUpload(): file = request.files.get("file") if file: file_path = " uploaded_file.jpg " # Save file return file_path
WinForm界面
client.cs:
using System.Collections.Generic;using System.IO;using System.Net;using System.Windows.Forms;namespace WFM_Test001{ public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("https://www.baidu.com"); req.Method = HttpWebRequest.Method.Get; HttpWebResponse res; try { res = (HttpWebResponse)req.GetResponse(); } catch (WebException ex) { res = (HttpWebResponse)ex.Response; } StreamReader sr = new StreamReader(res.GetResponseStream(), Encoding.UTF8); string result = sr.ReadToEnd(); MessageBox.Show("结果:" + result); } private void button3_Click(object sender, EventArgs e) { string url = "http://127.0.0.1:5000/test"; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = HttpWebRequest.Method.Get; HttpWebResponse res; try { res = (HttpWebResponse)request.GetResponse(); } catch (WebException ex) { res = (HttpWebResponse)ex.Response; } StreamReader sr = new StreamReader(res.GetResponseStream(), Encoding.UTF8); string content = sr.ReadToEnd(); MessageBox.Show("结果:" + content); } private void button2_Click(object sender, EventArgs e) { Dictionaryparam = new Dictionary (); param.Add("source", "D:/test.dcm"); param.Add("operation", "1"); param.Add("destination", "D:/destination/test.dcm"); string url = "http://127.0.0.1:5000/test"; string result = HttpTest.POST(url, "D:/1.png"); MessageBox.Show("上传结果:" + result); } }}
总结
通过以上代码示例,可以在C#中实现与服务器交互的各种HTTP请求。理解每个步骤的目的和实现方式,是实现自定义API或脚本化任务的关键。建议根据具体需求调整请求方式和参数,确保URL编码的正确性和异常处理的有效性。
发表评论
最新留言
很好
[***.229.124.182]2025年04月09日 16时42分00秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
ov9732 datasheet
2019-03-12
rk3399平台gt9xx触摸屏驱动分析
2019-03-12
X工厂 ERP (SBO) 2006 项目案例
2019-03-12
Android 吸顶布局
2019-03-12
python学习笔记2.3- 循环、判断
2019-03-12
python学习笔记4.1-python高级之生成器
2019-03-12
U3D实现WebCamera显示
2019-03-12
方法的重载
2019-03-12
SpringCloud第七章Ribbon负载均衡服务调用
2019-03-12
Python我的模块-字符替换
2019-03-12
"cannot be resolved or is not a field"问题解决
2019-03-12
Android Eclipse svn插件安装说明
2019-03-12
Android判断是否是平板
2019-03-12
C++中的字节对齐,以及空结构体,数组,union类型的实践
2019-03-12
"compileDebugJavaWithJavac"错误解决
2019-03-12
Android系统原理及开发要点详解
2019-03-12
Android基础#22:Android handler用法详解2,例2
2019-03-12
维基百科之AndroidRoot
2019-03-12