基于HttpWebRequest,HttpWebResponse发起请求
/// <summary>
/// 获取版本更新信息 GET
/// </summary>
/// <param name="softwareKey">软件的标识</param>
/// <returns></returns>
public static ResponseResult<UpdateInfo> GetUpdateInfo(string softwareKey)
{
ResponseResult<UpdateInfo> updateInfo = new ResponseResult<UpdateInfo>();
if (!IsConnectInternet())
{
updateInfo.statusCode = 404;
return updateInfo;
}
string updateInfoStr = null; #if DEBUG
Uri address = new Uri("http://xxxx/Api/UpdateCenter/GetUpdateInfo?softwareKey=" + softwareKey); #else
Uri address = new Uri("http://xxxx/Api/UpdateCenter/GetUpdateInfo?softwareKey=" + softwareKey);
#endif
try
{ // 使用httpwebrequest调用api接口
HttpWebRequest httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(address);
httpWebRequest.Method = "GET"; HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
StreamReader streamReader = new StreamReader(httpWebResponse.GetResponseStream());
updateInfoStr = streamReader.ReadToEnd(); if (!string.IsNullOrWhiteSpace(updateInfoStr))
{
updateInfo = JsonConvert.DeserializeObject<ResponseResult<UpdateInfo>>(updateInfoStr);
return updateInfo;
}
}
catch (Exception ex)
{
}
return null;
}
/// <summary>
/// 报送版本号与序列号 POST
/// </summary>
public static void PostVersionSerial()
{
Thread thread = new Thread(() =>
{
try
{
string result = "";
string JsonStr ="'"+SystemConfigBLL.GetSingle("CompanyInfo").Value+"'";
#if DEBUG
Uri uri = new Uri("http://xxxxx/Api/Customer/Report");
#else
Uri uri = new Uri("http://xxxxx/Api/Customer/Report");
#endif
//向接口发送数据 并得到返回值
HttpWebRequest objRequest = (HttpWebRequest)WebRequest.Create(uri);
objRequest.Method = "POST";
objRequest.ContentType = "application/json";
byte[] byteData = Encoding.UTF8.GetBytes(JsonStr);
objRequest.ContentLength = byteData.Length;
objRequest.GetRequestStream().Write(byteData, 0, byteData.Length); HttpWebResponse objResponse = (HttpWebResponse)objRequest.GetResponse();
using (StreamReader sr = new StreamReader(objResponse.GetResponseStream()))
{
result = sr.ReadToEnd();
sr.Close();
} ResponseResults<CustomerCode> responseResults = JsonConvert.DeserializeObject<ResponseResults<CustomerCode>>(result); if (!string.IsNullOrEmpty(responseResults.content.code))
{
if (string.IsNullOrEmpty(SystemConfigBLL.GetSingle("CustomerCode").Value))
{
int res = SystemConfigBLL.Update("CustomerCode", responseResults.content.code);
}
}
}
catch
{ } });
thread.IsBackground = true;
thread.Start();
}
基于HttpWebRequest,HttpWebResponse发起请求的更多相关文章
- python 爬虫 基于requests模块发起ajax的post请求
基于requests模块发起ajax的post请求 需求:爬取肯德基餐厅查询http://www.kfc.com.cn/kfccda/index.aspx中指定某个城市地点的餐厅数据 点击肯德基餐厅查 ...
- python 爬虫 基于requests模块发起ajax的get请求
基于requests模块发起ajax的get请求 需求:爬取豆瓣电影分类排行榜 https://movie.douban.com/中的电影详情数据 用抓包工具捉取 使用ajax加载页面的请求 鼠标往下 ...
- 【转】asp.net(c#)使用HttpWebRequest附加携带请求参数以post方式模拟上传大文件(以图片为例)到Web服务器端
原文地址:http://docode.top/Article/Detail/10002 目录: 1.Http协议上传文件(以图片为例)请求报文体内容格式 2.完整版HttpWebRequest模拟上传 ...
- HttpWebRequest,HttpWebResponse的用法和用途
1.用途:HettpWebRequest,HettpWebResponse用途和webServers的作用差不多,都是得到一个页面传过来的值.HttpWebRequest 2.用法:--------- ...
- C#获取网页内容 (WebClient、WebBrowser和HttpWebRequest/HttpWebResponse)
获取网页数据有很多种方式.在这里主要讲述通过WebClient.WebBrowser和HttpWebRequest/HttpWebResponse三种方式获取网页内容. 这里获取的是包括网页的所有信息 ...
- Elasticsearch High Level Rest Client 发起请求的过程分析
本文讨论的是JAVA High Level Rest Client向ElasticSearch6.3.2发送请求(index操作.update.delete--)的一个详细过程的理解,主要涉及到Res ...
- Elasticsearch 基于 URL 的搜索请求
背景 Elasticsearch 不像关系型数据库,没有简易的 SQL 用来查询数据,只能通过调用 RESTful API 实现查询.大体上查询分为两种,基于 URL 的和基于请求主体的.基于 URL ...
- C#网页采集数据的几种方式(WebClient、WebBrowser和HttpWebRequest/HttpWebResponse)
一.通过WebClient获取网页内容 这是一种很简单的获取方式,当然,其它的获取方法也很简单.在这里首先要说明的是,如果为了实际项目的效率考虑,需要考虑在函数中分配一个内存区域.大概写法如下 //M ...
- C#实现通过HttpWebRequest发送POST请求实现网站自动登陆
C#实现通过HttpWebRequest发送POST请求实现网站自动登陆 怎样通过HttpWebRequest 发送 POST 请求到一个网页服务器?例如编写个程序实现自动用户登录,自动提交表单数 ...
- Vue2使用Axios发起请求教程详细
当你看到该文章时希望你已知晓什么是跨域请求以及跨域请求的处理,本文不会赘述 本文后台基于Springboot2.3进行搭建,Controller中不会写任何业务逻辑仅用于配合前端调试 Controll ...
随机推荐
- Angular基础之ngFor遍历对象数组获取key和value渲染页面的几种方法
Angular的ngFor遍历对象数组的几种方法 方法一 ts文件: export class MyDemo { objectKeys = Object.keys; myObj = { a: ...
- Windows下使用Graalvm将Springboot应用编译成exe大大提高启动和运行效率
GraalVM安装 GraalVM安装 安装 请前往GraalVM官网 下载 GraalVM Community 22.3,注意当前支持的Springboot的GraalVM版本必须是22.3 笔者这 ...
- TCP/IP RTT算法比较
TCP重传机制Timeout特点: 设长了,重发就慢,效率和性能差: 设短了,重发就快,可能导致没有丢就重发,增加网络拥塞,导致更多的超时,更多的超时导致更多的重发. TCP协议引入2个概念: RTT ...
- linux09-分区挂载
1.Linux分区简要介绍 Linux来说无论有几个分区,分给哪一目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构 , Linux中每个分区都是用来组成整个文件系统的一部分. Linux ...
- JAVA虚拟机16-方法的动态调用
更详细:https://www.cnblogs.com/jthr/p/15762527.html 1.子类重写父类方法 1.1父类 public class Father { public int n ...
- Sentinel入门到实操 (限流熔断降级)
微服务保护--Sentinel 介绍Sentinel 1.背景 Sentinel是阿里巴巴开源的一款微服务流量控制组件.官网地址:https://sentinelguard.io/zh-cn/inde ...
- Spring事务失效原因分析解决
文章目录 1.方法内部调用 2.修饰符 3.非运行时异常 4.try-catch捕获异常 5.多线程调用 6.同时使用@Transactional和@Async 7.错误使用事务传播行为 8.使用的数 ...
- vue @click的stop和prevent
@click.stop 阻止事件冒泡 @click.prevent 阻止事件的默认行为 联合饿了吗UI使用的时候,el-table(主表)包含一个或多个子表时(el-tabs),点击右侧的编辑.删除时 ...
- 嵌入式Linux—FreeType矢量字体
freetype矢量字体 常用API 1.FT_Init_FreeType函数是FreeType库中的一个函数,其作用是初始化FreeType库,并返回一个指向FT_Library对象的指针.下面是该 ...
- Jenkins安装(Docker)版
一.jenkins安装 1.查找,下载jenkins镜像文件 启动docker,查找Jenkins镜像文件 docker search jenkins 下载Jenkins镜像文件 docker pul ...