ServiceHelper
public class ServiceHelper
{
private static string _baseUrl = $@"http://{Config.Instance.MesServerUrl}/";
private static string _sessionHeader;
public static void ClearSession()
{
_sessionHeader = "";
}
public static string SessionId; public static string BaseUrl
{
get { return _baseUrl; }
set { _baseUrl = $@"http://{value}/";} //value 包含IP和端口号 + 后台服务名, 如:localhost:8080/DadeMes
} /// <summary>
/// HttpClient实现Get请求
/// <param name="subUrl">子URL前面必须带 "/" 符号</param>
/// </summary>
public static string Get(string subUrl)
{
try
{
using (var client = GetClient())
{
return client.DownloadString(subUrl); }
}
catch (WebException)
{
throw new Exception("无法连接服务器");
}
} /// <summary>
/// Post
/// </summary>
/// <param name="url">子地址</param>
/// <param name="strData">要传输的json字符串</param>
/// <returns></returns>
public static string Post(string url, string strData = "")
{
try
{
using (var client = GetClient())
{
var postData = Encoding.UTF8.GetBytes(strData); //编码,尤其是汉字,事先要看下抓取网页的编码方式
var responseData = client.UploadData(url, "POST", postData); //得到返回字符流
if (string.IsNullOrWhiteSpace(_sessionHeader))
{
_sessionHeader = client.ResponseHeaders["Set-Cookie"];//保存session
}
return Encoding.UTF8.GetString(responseData); //解码
}
}
catch (WebException ex)
{
throw new Exception("无法连接服务器");
}
} /// <summary>
/// 将本地文件上传到服务器
/// </summary>
/// <param name="url">服务器路径</param>
/// <param name="filePath">本地路径</param>
/// <returns>上传成功后返回的是上文件的路径</returns>
public static string UploadFile(string url, string filePath)
{
try
{
using (var client = GetClient())
{
var responseData = client.UploadFile(url, filePath); //得到返回字符流 if (string.IsNullOrWhiteSpace(_sessionHeader))
{
_sessionHeader = client.ResponseHeaders["Set-Cookie"];//保存session
}
return Encoding.UTF8.GetString(responseData); //解码
}
}
catch (WebException ex)
{
throw new Exception("无法连接服务器");
}
} private static WebClient GetClient()
{
return new WebClient
{
//webClient.Headers.Add("Cookie",header);//在给服务器发送消息时加上这个Session值
Headers =
{
[HttpRequestHeader.UserAgent] = "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)",
["DNT"] = "",
//["Content-Type"]="application/x-www-form-urlencoded",
["Content-Type"]="application/json",
["Cookie"]=_sessionHeader,
["x-requested-with"]="XMLHttpRequest",
},
Encoding = Encoding.UTF8,
BaseAddress = BaseUrl
};
}
}
ServiceHelper的更多相关文章
- [项目]WebService涉及到的部分核心代码
前言: 博客园似乎不太喜欢设计模式的东西,一连写了几篇设计模式的东西,都没什么人气,也许是写的水平有些不够,另外设计模式属于内功,怎们都得修炼一下,否则,设计混乱,不成体系,对于大型项目来说,就会显 ...
- WebService开发
一.什么是WebService: 简单通俗来说,就是企业之间.网站之间通过Internet来访问并使用在线服务,一些数据,由于安全性问题,不能提供数据库给其他单位使用,这时候可以使 用WebSer ...
- 【C#】分享基于Win32 API的服务操作类(解决ManagedInstallerClass.InstallHelper不能带参数安装的问题)
注:这里的服务是指Windows 服务. ------------------201508250915更新------------------ 刚刚得知TransactedInstaller类是支持带 ...
- 动态调用Webservice 支持Soapheader身份验证(转)
封装的WebserviceHelp类: using System; using System.CodeDom; using System.CodeDom.Compiler; using System. ...
- OpenStack集成Docker
声明:绝对原创,欢迎转载,但请标明出处,谢谢! 最近在做openstack与Docker的集成工作,走了不少弯路,遇到不少问题,不过最终搭建成功了.现在将过程分享出来,以供参考. 一.环境介绍 1.软 ...
- Android 与 Webservice 的快速保存
前面写了一篇android对sqllite的快速保存博客,今天我们来看看android与webservice的交互,相信很多有经验的人自然就想到了soap.但是如果在小型项目中,具有大材小用之嫌.实际 ...
- 【原】K3Cloud平台开发之Python插件
有时候我们的表单可能很简单,只是一个简单交互的表单,但有可能还是要劳师动众的给它建个工程写个插件,是不是很不爽?例如我有如下一个表单: 功能很简单就是选个业务对象,收集绑定几个字段名,然后确定返回一个 ...
- WindowsService服务的C#实现
WindowsService(简称服务,下同)是目前做客户端软件后台运行功能的非常好的选择,本文基本解决了服务的创建和编写,代码控制服务的安装.卸载.启动.停止等,为服务传递参数,其他注意事项等 1. ...
- ios 调用webservice整理
资料地址:http://blog.sina.com.cn/s/blog_a30ee5f701016yn3.html 学iphone开发有一段时间了,对于我这个新手来说,学习过程中,遇到不少问题,尤其是 ...
随机推荐
- C++11左值引用和右值引用
转载:https://www.cnblogs.com/golaxy/p/9212897.html C++11的左值引用与右值引用总结 概念 1.&与&& 对于在C++中,大家 ...
- 2019 JUST Programming Contest J. Grid Beauty
J. Grid Beauty time limit per test 3.0 s memory limit per test 256 MB input standard input output st ...
- AutoCAD.Net圆弧半径标注延长线
#region 注册RegApp public static void CheckRegApp(string regapptablename) { Database db = HostApplicat ...
- shell__常用命令__grep
grep | zgrep (不用解压zip就能直接搜索) -i 不区分大小写 -I 忽略二进制文件 -R或r 递归文件目录 -c 计算找到的总数量 -n 显示行号 -v 显示不包含匹配文本的所有行 - ...
- Squid代理服务器(二)——配置Squid服务器
一.传统代理 (一)需求分析 局域网内,客户机访问自家的Web服务器,通过Squid代理服务器访问Web服务器,再由Squid反馈给客户机;在Squid主机上,构建Squid为客户机访问网站提供代理服 ...
- easyui页面上显示和PL/SQL编码问题
在页面上,只需要显示人们看的懂的文字就行,但是在数据库里面就不一定了,一般情况下,在数据库里面存字母,数字等除了汉字以外的字符,存汉字有个问题,就是有时候不同oracle数据库的客户端会出现乱码问题: ...
- python为何需要虚拟环境--Python虚拟环境的安装和配置-virtualenv
一 虚拟环境 virtual environment 它是一个虚拟化,从电脑独立开辟出来的环境.通俗的来讲,虚拟环境就是借助虚拟机docker来把一部分内容独立出来,我们把这部分独立出来的东西称作“容 ...
- 高阶篇:4.2.2)DFMEA层级分明的失效模式、失效后果、失效原因
本章目的:明确失效模式.失效后果.失效原因的定义,分清楚层次关系,完成DFMEA这部分的填写. 1.失效模式,失效后果,失效原因的定义: 这是FEMEA手册第四册中的定义. 1.1 潜在失效模式 (b ...
- TensorFlow GPU 的使用
一.TensorFlow 设备分配 1.设备分配规则 If a TensorFlow operation has both CPU and GPU implementations, the GPU d ...
- 01-复杂度2 Maximum Subsequence Sum (25 分)
Given a sequence of K integers { N1, N2, ..., NK }. A continuous subsequence is defined to ...