1编写帮助类根绝url得到json
public static string Post(string url)
{
string strURL = url;
//创建一个HTTP请求
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(strURL);
//Post请求方式
request.Method = "POST";
//内容类型
request.ContentType = "json";
//设置参数,并进行URL编码
//虽然我们需要传递给服务器端的实际参数是JsonParas(格式:[{\"UserID\":\"0206001\",\"UserName\":\"ceshi\"}]),
//但是需要将该字符串参数构造成键值对的形式(注:"paramaters=[{\"UserID\":\"0206001\",\"UserName\":\"ceshi\"}]"),
//其中键paramaters为WebService接口函数的参数名,值为经过序列化的Json数据字符串
//最后将字符串参数进行Url编码
string paraUrlCoded = System.Web.HttpUtility.UrlEncode("paramaters");
paraUrlCoded += "=" + System.Web.HttpUtility.UrlEncode("");
byte[] payload;
//将Json字符串转化为字节
payload = System.Text.Encoding.UTF8.GetBytes(paraUrlCoded);
//设置请求的ContentLength
request.ContentLength = payload.Length;
//发送请求,获得请求流
Stream writer;
try
{
writer = request.GetRequestStream();//获取用于写入请求数据的Stream对象
}
catch (Exception)
{
writer = null;
Console.Write("连接服务器失败!");
}
//将请求参数写入流
writer.Write(payload, 0, payload.Length);
writer.Close();//关闭请求流
String strValue = "";//strValue为http响应所返回的字符流
HttpWebResponse response;
try
{
//获得响应流
response = (HttpWebResponse)request.GetResponse();
}
catch (WebException ex)
{
response = ex.Response as HttpWebResponse;
}
Stream s = response.GetResponseStream();
//服务器端返回的是一个XML格式的字符串,XML的Content才是我们所需要的Json数据
StreamReader Reader = new StreamReader(s);
strValue = Reader.ReadToEnd();//取出Content中的Json数据
Reader.Close();
s.Close();
return strValue;//返回Json数据
}
2设定已知json类型
public static dynamic GetJsonType(this int jsonType) { if ((int)JsonType.订单 == jsonType) { return new { response = new { orderList = new { order = new[] { new { orderId = "", orderCode = "", orderStatus = "", orderAmount = "", productAmount = "", orderCreateTime = "", orderDeliveryFee = "", orderNeedInvoice = "", updateTime = "", endUserId = "", warehouseId = "", } } }, totalCount = 0, errorCount = 0 } }; } if ((int)JsonType.订单详情 == jsonType) { return new { response = new { orderInfo = new { orderDetail = new { orderId = "", orderCode = "", orderStatus = "", orderAmount = "", productAmount = "", realAmount = "", orderCreateTime = "", orderDeliveryFee = "", orderNeedInvoice = "", goodReceiverName = "", goodReceiverAddress = "", goodReceiverProvince = "", goodReceiverCity = "", goodReceiverCounty = "", goodReceiverPostCode = "", goodReceiverPhone = "", goodReceiverMoblie = "", orderPaymentConfirmDate = "", payServiceType = "", orderPromotionDiscount = "", deliverySupplierId = "", merchantRemark = "", updateTime = "", orderCouponDiscount = "", orderPlatformDiscount = "", endUserId = "", warehouseId = "", } }, orderItemList = new { orderItem = new[] { new { id="", orderId="", orderItemAmount = "", orderItemNum = "", orderItemPrice = "", productCName = "", productId = "", originalPrice = "", merchantId = "", updateTime = "", groupFlag = "", deliveryFeeAmount = "", promotionAmount = "", couponAmountMerchant = "", couponPlatformDiscount = "", subsidyAmount = "", } } } } }; } return null; }
3调用
var text = GetJson.Post("http://localhost:7822/SaleOrders/Read"); var type = ((int)JsonType.订单).GetJsonType(); var obj = JsonConvert.DeserializeAnonymousType(text, type);
上面的结果”obj“就是我们根据json的结构封装的匿名对象