使用XML与远程服务器进行交互

时间:2021-07-30 16:05:05

最近在做的一个项目其中的一部分是与远程服务器进行交互,确定身份验证的合法性,于是编写了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与远程服务器进行交互的更多相关文章

  1. android-数据存储之远程服务器存储

    一.如何编码实现客户端与服务器端的交互 <一>JDK内置原生API HttpUrlConnection <二>Android内置的包装API HttpClient浏览器 &lt ...

  2. &lbrack;转帖&rsqb;ExtJs与服务器的交互&lpar;一&rpar;

    Ext是一个非常好的Ajax框架,其华丽的外观表现确实令我们折服,然而一个应用始终离开不服务器端,因此在实现开发中我们需要对Ext与服务器端的交互技术有较为详细的了解,在开发中才能游刃有余地应用.本文 ...

  3. IDEA连接远程服务器Docker部署Spring Boot项目

    开始前的准备工作 拥有一台云服务器,我的是腾讯云服务器(CentOS7) 腾讯云服务器安装Docker,我的版本是Docker 19.03.9,关于安装和配置镜像加速器可以查阅我的另一篇博文:http ...

  4. 【WCF】如何将WCF部署到远程服务器

    一.前言       最近需要将自己写的WCF服务部署到远程服务器上,也就是公网上.宿主是IIS,在配置成功之前遇到了很多问题,问题如下: 1. WCF该怎么宿主在IIS上,为何会出现 400 Bad ...

  5. 使用VisualVM监控远程服务器JVM

    VisualVM是JDK自带的一款全能型性能监控和故障分析工具,包括对CPU使用.JVM堆内存消耗.线程.类加载的实时监控,内存dump文件分析,垃圾回收运行情况的可视化分析等,对故障排查和性能调优很 ...

  6. Ajax概述及浅谈其与服务器的交互过程

    概念: 首先AJAX不只是一个特定的客户端技术,更应算是一种技巧.Ajax技术的核心操作是用XmlHttpRequest(下称XHR)对象进行异步数据处理. 所谓异步,即通过 AJAX,JavaScr ...

  7. Eclipse发布Maven项目到远程服务器

    pom.xml中的配置依赖有两种: 一.tomcat-maven.plugin <plugin> <groupId>org.codehaus.mojo</groupId& ...

  8. 远程服务器数据交互技术:rsync&comma;scp&comma;mysqldump

    远程服务器间数据文件交互,可用技术:rsync,scp 速度:rsync是非加密传输,比scp快 安全:scp为加密传输 备份体量:rsync只更新差异部分,可以做增量和全量备份.scp为全量 传输方 ...

  9. Windows下使用TeamViewer连接远程服务器,以及解决&OpenCurlyDoubleQuote;远程桌面关闭后TeamViewer不能连接”的问题

    1.本地安装TeamViewer,完成后如下: 2.远程服务器也安装TeamViewer 在本地TeamViewer中得伙伴ID,输入远程的ID,弹出如下对话框,输入密码即可. 3.这时虽然可以连接, ...

随机推荐

  1. php之jquery

    <!DOCTYPE html> <html> <head> <script type="xxx.js"></script&gt ...

  2. 【原】mysql慢日志分析

    pt-query-digest slowquery.log --since "2016-01-23 10:50:00"

  3. 复健小CM

    系统 : Windows xp 程序 : Keygenme # 2 程序下载地址 :http://pan.baidu.com/s/1qYIk2HQ 要求 : 注册机编写 使用工具 : OD 可在“PE ...

  4. Linux性能检测命令 - vmstat

    一.vmstat命令描述 最常见的Linux/Unix监控工具想必是vmstat了,vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可以展现给定时间间隔的服务 ...

  5. substring函数——sql

    --substring( expression, start, length ) expression待截取的文字 start 截取位置的起始下标 length 要截取的长度 --左边第一个字符的下标 ...

  6. Android Task 相关

    在日常开发过程中,只要涉及到activity,那么对task相关的东西总会或多或少的接触到,不过对task相关的一些配置的作用一直理解的还不是很透彻,官方文档在细节上说的也不够清楚,要透彻理解还是得自 ...

  7. 活锁(livelock)

    活锁(livelock) 活锁指的是任务或者执行者没有被阻塞,由于某些条件没有满足,导致一直重复尝试,失败,尝试,失败. 活锁和死锁的区别在于,处于活锁的实体是在不断的改变状态,所谓的“活”, 而处于 ...

  8. sql进阶

    --1.变量的声明和赋值   declare @Start DateTime, @End DateTime set @Start = '1999-9-9' set @End = '2000-1-1' ...

  9. vuex的getters处理数据

    getters是用来处理state里的数据的 getters传递一个值state 例子: store.js import Vue from 'vue' import Vuex from 'vuex' ...

  10. shiro学习(三)权限 authenrication

    主体 主体,即访问应用的用户,在Shiro中使用Subject代表该用户.用户只有授权后才允许访问相应的资源. 资源 在应用中用户可以访问的任何东西,比如访问JSP页面.查看/编辑某些数据.访问某个业 ...