c#从Web Service 获取信息并解析json

如果需要登录,使用下边方法,如果为匿名登录的,可以省略,在全局变量中定义public static string Cookiemsg,方便重复使用cookie。

 1 public static CookieMsg GetCookieMessage(string name, string password)
 2  {
 3                 CookieMsg cookieMsg = null;
 4                 string retString = "";
 5                 try
 6                 {
 7                     HttpWebRequest request = (HttpWebRequest)WebRequest.Create("&user=" + name + "&pwd=" + password);
 8
 9                     request.Method = "GET";
10                   request.ContentType = "text/html;charset=UTF-8";
11                   HttpWebResponse response = (HttpWebResponse)request.GetResponse();
12
13                   Stream myResponseStream = response.GetResponseStream();
14                   StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
15                   retString = myStreamReader.ReadToEnd();
16
17                   myStreamReader.Close();
18                   myResponseStream.Close();
19
20                   cookieMsg = ManageCookieMsg(retString);
21               }
22               catch (Exception ex)
23               {
24
25               }
26
27               return cookieMsg;
28 }
29
30
31         private static CookieMsg ManageCookieMsg(string json)
32         {
33
34             MemoryStream stream2 = new MemoryStream();
35             DataContractJsonSerializer ser2 = new DataContractJsonSerializer(typeof(CookieMsg));
36             StreamWriter wr = new StreamWriter(stream2);
37             CookieMsg cookieMsg = null;
38             try
39             {
40                 wr.Write(json);
41                 wr.Flush();
42                 stream2.Position = 0;
43                 Object obj = ser2.ReadObject(stream2);
44                 cookieMsg = (CookieMsg)obj;
45
46                 Cookiemsg = "person_id=" + cookieMsg.Person_id + ";" + "identity_id=" + cookieMsg.Identity + ";" + "token=" + cookieMsg.Token;
47             }
48             catch (Exception ex)
49             {
50
51             }
52
53             return cookieMsg;
54         }

需要另一个类中添加封装Json的属性,会将返回的用户信息封装在一个类中。

 1 using System.Collections.Generic;
 2 using System.Runtime.Serialization;
 3
 4  #region Cookie
 5
 6     [DataContract]
 7     public class CookieMsg
 8     {
 9         [DataMember]
10         private string person_id;
11
12         public string Person_id
13         {
14             get { return person_id; }
15             set { person_id = value; }
16         }
17
18         [DataMember]
19         private string person_name;
20
21         public string Person_name
22         {
23             get { return person_name; }
24             set { person_name = value; }
25         }
26
27         [DataMember]
28         private string identity;
29
30         public string Identity
31         {
32             get { return identity; }
33             set { identity = value; }
34         }
35
36         [DataMember]
37         private string token;
38
39         public string Token
40         {
41             get { return token; }
42             set { token = value; }
43         }
44
45     }
46
47 #endregion

下面开始拼装Http的头,获取所需信息。

 1         private static string WebMessage(string url)
 2         {
 3             string retString = "";
 4             try
 5             {
 6
 7                 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
 8                 request.Method = "GET";
 9                 request.Accept = "application/json, text/javascript, */*; q=0.01";
10                 request.ContentType = "application/x-www-form-urlencoded";
11                 request.Proxy = null;
12                 request.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip,deflate,sdch");
13                 request.Timeout = 1000;
14                 request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36";
15                 request.KeepAlive = true;
16                 request.Headers.Add("Accept-Language", "zh-CN,zh;q=0.8");
17                 request.Headers.Add("Cookie", Cookiemsg);
18
19                 ////填充参数
20                 byte[] param;
21                 StringBuilder sb = new StringBuilder();
22                 param = System.Text.Encoding.UTF8.GetBytes(sb.ToString());
23                 request.ContentLength = param.Length;
24
25                 HttpWebResponse response = (HttpWebResponse)request.GetResponse();
26
27
28                 Stream myResponseStream = response.GetResponseStream();
29                 if (response.ContentEncoding.ToLower().Contains("gzip"))
30                 {
31
32                     myResponseStream = new GZipStream(myResponseStream, CompressionMode.Decompress);
33                 }
34                 StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
35
36                 retString = myStreamReader.ReadToEnd();
37
38                 myStreamReader.Close();
39                 myResponseStream.Close();
40
41             }
42             catch (Exception ex)
43             {
44
45             }
46             return retString;
47         }

返回的Json字符串再使用上面的封装方法,按照实际返回信息进行封装就可以了。

c#从Web Service 获取信息并解析json

时间: 2024-08-16 13:51:03

c#从Web Service 获取信息并解析json的相关文章

iOS开发网络篇之Web Service和XML数据解析

郝萌主倾心贡献,尊重作者的劳动成果,请勿转载. 假设文章对您有所帮助,欢迎给作者捐赠,支持郝萌主.捐赠数额任意,重在心意^_^ 我要捐赠: 点击捐赠 Cocos2d-X源代码下载:点我传送 游戏官方下载:http://dwz.cn/RwTjl 游戏视频预览:http://dwz.cn/RzHHd 游戏开发博客:http://dwz.cn/RzJzI 游戏源代码传送:http://dwz.cn/Nret1 在iPhone和后台系统的通信中,使用Web Service获取server数据上最常见的一

获取HttpResponse并解析JSON数据

package com.inesaie.trace.accommon.util; import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader; import org.apache.http.HttpResponse;import org.codehaus.jettison.json.JSONException;import org.codehaus.jettison.json.

Android开发之使用Web Service进行网络编程

使用Web Service进行网络编程 Android应用通常都是执行在手机平台上.手机系统的硬件资源是有限的,无论是存储能力还是计算能力都有限.在Android系统上开发.执行一些单用户.小型应用是可能的, 但对于须要进行大量的数据处理.复杂计算的应用.还是仅仅能部署在远程server上,Android应用将仅仅是充当这些应用的client. 为了让Android应用与远程server之间进行交互,能够借助子Java的RMI技术,但这要求远程server程序必须採用Java实现:也能够借助于C

Android---56---Android应用调用Web Service/号码归属地查询

使用Android应用调用Web Service 需要工具: ksoap2-android 下载地址:http://pan.baidu.com/s/1jGL6b10 build path将ksoap2-android 添加到项目工程中 先将ksoap2-android 包导入 libs目录下,右键build path -> add to build path 点击项目工程名,右键 build path -> configure build path 在ksoap2-android这个包前面打上

Android笔记之 Web Service 基础

一.Web Service是什么? 就是网络服务,根据W3C的定义,WebServices(Web服务)是一个用于支持网络间不同机器互操作的软件系统,它是一种自包含.自描述和模块化的应用程序,它可以在网络中被描述.发布和调用,可以将它看作是基于网络的.分布式的模块化组件.  Web Services是建立在通用协议的基础之上的,包括HTTP.SOAP.UDDI.WSDL等.其中Web Service三要素就是SOAP.WSDL和UDDI. SOAP用来描述传递信息的格式, WSDL用来描述如何访

翻译-使用Spring调用SOAP Web Service

原文链接: http://spring.io/guides/gs/consuming-web-service/ 调用SOAP web service 本指南将指导你使用Spring调用一个基于SOAP的web service的整个过程. 指南内容 你将构建一个客户端,使用SOAP用来从远端的基于WSDL的web service获取天气数据.请访问http://wiki.cdyne.com/index.php/CDYNE_Weather进一步获取该天气服务的信息. 该服务根据邮编返回天气预测.你可

web service介绍

WEB SEVICE平台 web Service 三种基本元素: SOAP .WSDL .UDDI 什么是SOAP:       XML+HTTP 基本的Web Service平台 SOAP 简易对象访问协议 ,是一宗用于发送消息的格式,独立于平台,独立于语言,基于XML 什么是WSDL: WSDL是基于XML的用于描述Web Service以及如何访问Web Service的语言 WSDL 网络服务描述语言,使用XML编写 什么是UDDI: UDDI是一种目录服务 UDDI指通用的描述.发现以

关于 XML/EDI Web Service 小介绍

XML/EDI 系统的设计 总体框架 该 XML/EDI 系统分为四个层次: 第一层是提供 Web Service 的服务提供者,它包括服务提供者所能提供的所有服务(主要是与数据库之间的交互以及复杂功能的实现) 第二层是收集 Web Service 的服务代理,它主要收集所有的 Web Service 并对外发布,服务代理可以通过 Internet 或 Intranet 向服务中心发送远程调用信息,这些信息吧请求内容以 XML 数据格式表示且采用基于 HTTP 等通用 Internet 协议之上

Web Service平台概述

Web  Service平台主要涉及的技术有SOAP(Simple  Object  Access  Protocal,简单对象访问协议), WSDL(Web  Service  Description  Language, Web  Service描述语言),  UDDI(Universal  Description  and  Integration ,统一描述.发现和整合协议). 一.SOAP(简单对象访问协议) SOAP(Simple  Object  Access  Protocal,