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的更多相关文章

  1. [项目]WebService涉及到的部分核心代码

     前言: 博客园似乎不太喜欢设计模式的东西,一连写了几篇设计模式的东西,都没什么人气,也许是写的水平有些不够,另外设计模式属于内功,怎们都得修炼一下,否则,设计混乱,不成体系,对于大型项目来说,就会显 ...

  2. WebService开发

    一.什么是WebService: 简单通俗来说,就是企业之间.网站之间通过Internet来访问并使用在线服务,一些数据,由于安全性问题,不能提供数据库给其他单位使用,这时候可以使   用WebSer ...

  3. 【C#】分享基于Win32 API的服务操作类(解决ManagedInstallerClass.InstallHelper不能带参数安装的问题)

    注:这里的服务是指Windows 服务. ------------------201508250915更新------------------ 刚刚得知TransactedInstaller类是支持带 ...

  4. 动态调用Webservice 支持Soapheader身份验证(转)

    封装的WebserviceHelp类: using System; using System.CodeDom; using System.CodeDom.Compiler; using System. ...

  5. OpenStack集成Docker

    声明:绝对原创,欢迎转载,但请标明出处,谢谢! 最近在做openstack与Docker的集成工作,走了不少弯路,遇到不少问题,不过最终搭建成功了.现在将过程分享出来,以供参考. 一.环境介绍 1.软 ...

  6. Android 与 Webservice 的快速保存

    前面写了一篇android对sqllite的快速保存博客,今天我们来看看android与webservice的交互,相信很多有经验的人自然就想到了soap.但是如果在小型项目中,具有大材小用之嫌.实际 ...

  7. 【原】K3Cloud平台开发之Python插件

    有时候我们的表单可能很简单,只是一个简单交互的表单,但有可能还是要劳师动众的给它建个工程写个插件,是不是很不爽?例如我有如下一个表单: 功能很简单就是选个业务对象,收集绑定几个字段名,然后确定返回一个 ...

  8. WindowsService服务的C#实现

    WindowsService(简称服务,下同)是目前做客户端软件后台运行功能的非常好的选择,本文基本解决了服务的创建和编写,代码控制服务的安装.卸载.启动.停止等,为服务传递参数,其他注意事项等 1. ...

  9. ios 调用webservice整理

    资料地址:http://blog.sina.com.cn/s/blog_a30ee5f701016yn3.html 学iphone开发有一段时间了,对于我这个新手来说,学习过程中,遇到不少问题,尤其是 ...

随机推荐

  1. c# 跨线程访问窗体UI

    定义个结构体用于存储线程中传递的参数信息 struct ImgInfo { public string url; public string path; }; 参数传递到线程中 ImgInfo img ...

  2. 网易严选的wkwebview测试之路

    本文来自网易云社区 作者:孙娇 UIWebView是苹果继承于UIView封装的一个加载web内容的类,它可以加载任何远端的web数据展示在你的页面上,你可以像浏览器一样前进后退刷新等操作.不过苹果在 ...

  3. centos6.3 配置 smb 服务

    1.安装 samba 以及相关依赖包:yum install samba samba-client samba-swat 2.添加 smb 服务用户:smbpasswd -a user_name(之后 ...

  4. [ActionScript 3.0] 动态绘制扇形实例(拖拽绘制)

    package { import flash.display.Shape; import flash.display.Sprite; import flash.events.MouseEvent; / ...

  5. Linux 下 Wordpress "Not Found" 解决

    无题.仅仅记录解决过程: 原因是WEB目录下的.htaccess文件需要开启伪静态才能将文件重定向到其他地方.

  6. CentOS下TFTP服务安装

    CentOS下TFTP服务安装 今天和同学做交换机恢复DCN操作系统的任务,然后需要用到tftp,然后就开始研究.这里对TFTP服务进行介绍以及安装. tftp 比 ftp 更易于管理 tftp 比 ...

  7. this指向的一个小总结

    凡是在函数内部调用的函数的this的指向都是window 定时器,延时器this的指向都是window 在事件中一般情况下this的指向都指向当前的DOM对象 在对象函数中this的指向一般情况下都指 ...

  8. Xshell和Xftp登陆WSL

    参考:https://zhuanlan.zhihu.com/p/34950508 关键步骤: 1. 下载Xshell和Xftp 2.  拷贝ssh配置文件 sudo cp /etc/ssh/sshd_ ...

  9. 进阶篇:3)面向制造的设计DFM

    本章目的:正确认识面向制造的设计-DFM. 1.DFM概念 DFM有两种描述是作者比较认可的. ①面向制造的设计(design for manufacturing简称DFM):指产品设计需要满足产品制 ...

  10. node爬取页面元素

    /** * Created by on 2018/12/25. */const http = require("https");const fs = require('fs'); ...