使用XML与远程服务器进行交互
最近在做的一个项目其中的一部分是与远程服务器进行交互,确定身份验证的合法性,于是编写了SendRequest方法
此方法发送给远程服务器XML请求,服务器经过处理后,返回XML回应,由此方法接收到后进行返回。
protected string SendRequest(string strXML) {
string str = ""; //双方协定的XML格式
Encoding encoding = Encoding.UTF8; //接收页面
string strUrl = "http://localhost:14360/WebSite16/Handler.ashx";
byte[] data = encoding.GetBytes(strXML); //准备请求...
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(strUrl);
myRequest.Method = "POST";
myRequest.ContentType = "text/xml;charset=utf-8";
myRequest.ContentLength = data.Length; //身份认证,特别注意,参数用户名,密码
NetworkCredential cred = new NetworkCredential("wcadmin", "wcadmin");
myRequest.Credentials = cred; //在信息请求头部加入验证信息,不然验证不通过
myRequest.PreAuthenticate = true;
Stream newStream = myRequest.GetRequestStream(); //发送数据
newStream.Write(data, 0, data.Length);
newStream.Close();
WebResponse response = myRequest.GetResponse();
Stream resStream = response.GetResponseStream();
StreamReader sr = new StreamReader(resStream, System.Text.Encoding.UTF8);
str = sr.ReadToEnd();//接收返回值,返回值可以是xml
resStream.Close();
sr.Close();
return str;
}
解析返回的XML的方法如下代码片段:
public bool CheckUser(string token) {
bool flag = false; //验证成功与否的标识
//向服务器发出验证XML信息
string requestXML = "";
requestXML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><ecity><msgname>XXXXXX</msgname><msgversion>1.0.0</msgversion><transactionid>000000</transactionid><timestamp>"
+ DateTime.Now.ToString("yyyyMMddhhmmss") + "</timestamp><msgsender>abc</msgsender><svccont><token>"+token+"</token></svccont></ecity>";
//发送验证的XML并获取返回的XML信息
string responseXML = "";
responseXML= SendRequest(requestXML);
//解析XML信息
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(responseXML);
XmlNodeList nodes = xmlDoc.SelectNodes("/ecity/msgname");
if (nodes.Count > 0)
{
//首先判断是否接口正确
if (nodes[0].InnerText.Trim().ToLower() == "getuserinforesp")
{
nodes = xmlDoc.SelectNodes("/ecity/result/rspcode");
if (nodes.Count > 0)
{
//表示验证通过
if (nodes[0].InnerText.Trim() == "0")
{
flag = true;
}
}
}
}
return flag;
}
转自:http://www.cnblogs.com/shunyao8210/archive/2011/09/19/2181075.html
使用XML与远程服务器进行交互的更多相关文章
- android-数据存储之远程服务器存储
一.如何编码实现客户端与服务器端的交互 <一>JDK内置原生API HttpUrlConnection <二>Android内置的包装API HttpClient浏览器 < ...
- [转帖]ExtJs与服务器的交互(一)
Ext是一个非常好的Ajax框架,其华丽的外观表现确实令我们折服,然而一个应用始终离开不服务器端,因此在实现开发中我们需要对Ext与服务器端的交互技术有较为详细的了解,在开发中才能游刃有余地应用.本文 ...
- IDEA连接远程服务器Docker部署Spring Boot项目
开始前的准备工作 拥有一台云服务器,我的是腾讯云服务器(CentOS7) 腾讯云服务器安装Docker,我的版本是Docker 19.03.9,关于安装和配置镜像加速器可以查阅我的另一篇博文:http ...
- 【WCF】如何将WCF部署到远程服务器
一.前言 最近需要将自己写的WCF服务部署到远程服务器上,也就是公网上.宿主是IIS,在配置成功之前遇到了很多问题,问题如下: 1. WCF该怎么宿主在IIS上,为何会出现 400 Bad ...
- 使用VisualVM监控远程服务器JVM
VisualVM是JDK自带的一款全能型性能监控和故障分析工具,包括对CPU使用.JVM堆内存消耗.线程.类加载的实时监控,内存dump文件分析,垃圾回收运行情况的可视化分析等,对故障排查和性能调优很 ...
- Ajax概述及浅谈其与服务器的交互过程
概念: 首先AJAX不只是一个特定的客户端技术,更应算是一种技巧.Ajax技术的核心操作是用XmlHttpRequest(下称XHR)对象进行异步数据处理. 所谓异步,即通过 AJAX,JavaScr ...
- Eclipse发布Maven项目到远程服务器
pom.xml中的配置依赖有两种: 一.tomcat-maven.plugin <plugin> <groupId>org.codehaus.mojo</groupId& ...
- 远程服务器数据交互技术:rsync,scp,mysqldump
远程服务器间数据文件交互,可用技术:rsync,scp 速度:rsync是非加密传输,比scp快 安全:scp为加密传输 备份体量:rsync只更新差异部分,可以做增量和全量备份.scp为全量 传输方 ...
- Windows下使用TeamViewer连接远程服务器,以及解决“远程桌面关闭后TeamViewer不能连接”的问题
1.本地安装TeamViewer,完成后如下: 2.远程服务器也安装TeamViewer 在本地TeamViewer中得伙伴ID,输入远程的ID,弹出如下对话框,输入密码即可. 3.这时虽然可以连接, ...
随机推荐
- valueOf intValue parsetInt区别
1.int intValue() 以 int 类型返回该 Integer 的值. Long l = 123; l.intValue() ---->int : 123 2.static int p ...
- 从iMessage到微信,QQ离线短信服务,米聊,易信
把iMessage.米聊.QQ离线短信服务.微信.易信放到一下,毫无疑问大家能够看出他们的共同点,iMessage与米聊我们就不用说了,有雷布斯的存在就有米聊的存在,QQ离线短信服务是提供给QQ会员的 ...
- js/ajax跨越访问-jsonp的原理和实例(javascript和jquery实现代码)
最近做了一个项目,需要用子域名调用主域名下的一个现有的功能,于是想到了用jsonp来解决,在我们平常的项目中不乏有这种需求的朋友,于是记录下来以便以后查阅同时也希望能帮到大家,需要了解的朋友可以参考下 ...
- HashBiMap
HashBiMap AbstractMap类实现了Map接口定义的一些方法,而BiMap类定义了其子类需要实现的一些方法,使得所有实现BiMap的类必须符合其独有的特性:键.值都是唯一的.HashB ...
- Nginx工作原理和优化、漏洞
1. Nginx的模块与工作原理 第三方模块:HTTP Upstream Request Hash模块.Notice模块和HTTP Access Key模块. 图1-1展示了Nginx模块常规的HT ...
- Golang 绘图基础- 不同的输出源
先看一个简单代码, 它执行后会产生下面的300*500的png图片文件: 代码: 1: package main 2: 3: import ( 4: "fmt" 5: " ...
- VBS学习:流程控制语句判断结构
一.数值运算: 1) Dim a,b,c a=inputbox("a是:","输入半径") b=Inputbox("b是:","输 ...
- WCF_Config頁面常用配置
右键点击App.config文件,选中Edit WCF Configuration进行编辑,我们添加2个baseAddress,一个是基于HTTP协议的:一个是基于TCP协议的.同时添加2个bindi ...
- How To Set Up Port Forwarding in Linux
Port forwarding usually used when we want our computer act like a router. Our computer receive the p ...
- windows创建虚拟界面
定义 VDesktopName: PAnsiChar; //虚拟桌面名 VDesktop: HDESK; //虚拟桌面 创建 VDesktopName := 'MYDESK'; VDesktop ...