C# 客户端HTTP通信
本文链接:https://blog.csdn.net/weixin_40586592/article/details/85000822
本篇文章讨论C# 客户端,进行HTTP通信,适用JSON数据格式。
下边为GET和POST请求
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
namespace wode.HTTP
{
class HttpUitls
{
public static string Get(string Url)
{
//System.GC.Collect();
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
request.Proxy = null;
request.KeepAlive = false;
request.Method = "GET";
//request.ContentType = "application/json; charset=UTF-8";
request.ContentType = "application/x-www-form-urlencoded";//窗体数据被编码为名称/值对形式
request.AutomaticDecompression = DecompressionMethods.GZip;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream myResponseStream = response.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.UTF8);
string retString = myStreamReader.ReadToEnd();
myStreamReader.Close();
myResponseStream.Close();
if (response != null)
{
response.Close();
}
if (request != null)
{
request.Abort();
}
return retString;
}
/// <summary>
/// Post请求可用
/// </summary>
/// <param name="Url"></param>
/// <param name="Data"></param>
/// <param name="Referer"></param>
/// <returns></returns>
public static string Post(string Url, string Data, string Referer)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
request.Method = "POST";
request.Referer = Referer;
//request.Proxy = new WebProxy("192.168.1.12",80);
byte[] bytes = Encoding.UTF8.GetBytes(Data);
request.ContentType = "application/json; charset=UTF-8"; ;//窗体数据被编码为名称/值对形式
//request.ContentType = "application/json";
request.ContentLength = bytes.Length;
Stream myResponseStream = request.GetRequestStream();
myResponseStream.Write(bytes, 0, bytes.Length);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader myStreamReader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
string retString = myStreamReader.ReadToEnd();
myStreamReader.Close();
myResponseStream.Close();
if (response != null)
{
response.Close();
}
if (request != null)
{
request.Abort();
}
return retString;
}
}
}
下边为前台界面进行调用方法,采用的是键值对形式
//使用POST请求服务器
var para = new Dictionary<string, string>();
para.Add("图标", haha);
string json = JsonConvert.SerializeObject(para);//序列化数据
string url = "http://192.168.9.9:8080/。。。。。";
string postJson = HttpUitls.Post(url, json, "");
//使用GET请求服务器
string baseUrl = "http://192.168.9.9.。。。。";
string getUrl = baseUrl + "?" + "au=" + au;
string getJson = HttpUitls.Get(getUrl);
如果想让接收的json形式比较直观,可以调用如下方法
/// <summary>
/// 格式化字符串,方便查看
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
private string ConvertJsonString(string str)
{
JsonSerializer serializer = new JsonSerializer();
TextReader tr = new StringReader(str);
JsonTextReader jtr = new JsonTextReader(tr);
object obj = serializer.Deserialize(jtr);
if(obj!=null)
{
StringWriter textWriter = new StringWriter();
JsonTextWriter jsonWriter = new JsonTextWriter(textWriter)
{
Formatting = Formatting.Indented,
Indentation = 4,
IndentChar = ' '
};
serializer.Serialize(jsonWriter, obj);
return textWriter.ToString();
}
else
{
return str;
}
}
上述这些方法的调用必须添加Newtonsoft.Json命名空间。谢谢大家!
C# 客户端HTTP通信相关推荐
- Java中利用socket实现简单的服务端与客户端的通信(中级)——实现任意双向通信
本文计划采用socket实现客户端和服务端的任意双向通信,即客户端可以随时给服务端发消息,服务端也可以随时给客户端发消息,最终结果就是一个类似与QQ的聊天软件的功能. 以下代码可以直接拷贝到Eclip ...
- Java中利用socket实现简单的服务端与客户端的通信(基础级)
在上一篇文章中,简单的介绍了java中入门级的socket编程,简单的实现了客户端像服务器端发送数据,服务器端将数据接收并显示在控制台,没有涉及多线程.上一篇文章的链接:Java中利用socket实现 ...
- 【Socket网络编程】6.两个既能收也能发的udp客户端进行通信的原理
两个既能收也能发的udp客户端进行通信的原理 发送数据时可能会用到INADDR_BROADCAST代表255.255.255.255的广播地址,作用范围只能在当前局域网. 接收数据可能会用到INAD ...
- linux多个客户端如何通信_linux实现多个客户端通信进阶
2020.07.31 linux分享 ● ● ● #01#前言 前情回顾: 在整理上学期资料同时将部分代码分享,将以代码书写时间为时间线,按优化程度逐步发出,代码均为在linux下c编程. 上回功能: ...
- Linux socket编程(二) 服务器与客户端的通信
http://www.cnblogs.com/-Lei/archive/2012/09/04/2670964.html 上一篇写了对套接字操作的封装,这一节使用已封装好的Socket类实现服务器与客户 ...
- 基于 HTML5 WebGL 的 3D 服务器与客户端的通信
这个例子的初衷是模拟服务器与客户端的通信,我把整个需求简化变成了今天的这个例子.3D 机房方面的模拟一般都是需要鹰眼来辅助的,这样找产品以及整个空间的概括会比较明确,在这个例子中我也加了,这篇文章就算 ...
- python安卓开发实例_python服务器与android客户端socket通信实例
本文实例讲述了python服务器与android客户端socket通信的方法.分享给大家供大家参考.具体实现方法如下: 首先,服务器端使用python完成,下面为python代码: #server.p ...
- Java多线程实现多客户端的通信
title: Java多线程实现多客户端的通信 date: 2019-05-05 12:50:00 Java多线程实现多客户端的通信 昨天学了Java中网络支持Socket应用,写了一个基于TCP通信 ...
- android 手机 与 python服务器_python服务器与android客户端socket通信实例
本文实例讲述了python服务器与android客户端socket通信的方法.分享给大家供大家参考.具体实现方法如下: 首先,服务器端使用python完成,下面为python代码: #server.p ...
- 简单的Java服务器和客户端的通信
系列文章: ESP8266的AP模式与STA模式简单测试 简单的Java服务器和客户端的通信 STM32 ESP8266和Java服务器透传模式下的双向通信 jsp向servlet传输数据 Servl ...
最新文章
- 生信分析-TBtools绘制热图
- java文件用editplus乱码,EditPlus设置编码后,编译时仍然出现乱码
- 【mybatis基础】mybatis开发dao两种方法
- 用Docker创建Nexus
- python函数参数定义不合法_下列哪种函式参数定义不合法?
- Visual Paradigm 教程[UML]:如何在序列图中使用持续时间约束?
- 苹果电脑macbook怎样强制关闭软件
- roc与auc曲线的理解
- mysql如何处理图片吗_如何解决mysql插入图片后缀名问题?
- flow 静态类型检查 js
- css px转rem工具,支持生产整个css文件统一修改
- 图文并茂排序与算法总结
- conda 克隆环境
- win7计算机搜索功能没有了,win7搜索功能不能用了怎么办|win7搜索功能不见了怎么解决? - 学无忧...
- 仿朋友圈图片查看功能
- C++ std::mutex 用法详解
- 封装好的散点图拟合八大函数回归模型(逆、幂函、对数、S、复合、生长、指数 、线性函数,)
- Android应用内跳转到google play或者其他应用市场详情页下载或者评价
- (更新时间)2021年6月2日 商城高并发秒杀系统(.NET Core版) 20-性能优化-系统配置
- SDOI2014 Round1 day2
热门文章
- markdown如何设置图片大小_Markdown编辑知乎文章的完全攻略
- app自定义图标 vue_uniapp自定义图标组件
- 传递子类 java_Java,将主类传递给子类,错误的编码风格?
- mysql 聚簇索引实例_MySQL聚簇索引
- 华为鸿蒙战略大会,华为发布鸿蒙2.0手机版的三大战略意义,全场景万物互联只是其一...
- java的回文是什么_Java实现回文判断
- php面向对象代码_PHP面向对象之抽象类详解(代码实例)
- 计算机玩游戏不能全屏,玩游戏屏幕两边有黑条?教你简单几步轻松解决-win7玩游戏不能全屏...
- linux mint 安装php,使用apt-get方式为Linux Mint 13安装PHP+MYSQL+Apache
- linux内核字符串逆序,Linux内核中常用字符串函数实现