您的位置:首页 > 理论基础 > 计算机网络

C#通过发送 http 请求调用接口之Get

2014-07-31 10:27 721 查看
1.实现车辆信息查询接口

(1)描述

本接口提供指定车牌号,车牌颜色的车辆信息查询。

(2)接口调用示例:

待加密格式

type=xxx&user=...

(3)请求地址格式
http://****/vinfos?p=加密后数据
(4)实现:

a)aspx:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="GoodsVehicle2.aspx.cs" Inherits="GoodsVehicleTest.GoodsVehicle2" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script src="Js/jquery-1.9.1.js" type="text/javascript"></script>
<script type="text/javascript">

</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button runat="server" ID="btnSearch" Text="查询" Width="200px" />
</div>
<div>
<table  border="1px" cellspacing="0" cellpadding="0">
<tr>
<td>终端 ID </td>
<td><asp:Label runat="server" ID="lbltmc"></asp:Label></td>
</tr>
<tr>
<td>SIM 卡卡号 </td>
<td><asp:Label runat="server" ID="lblcmdr"></asp:Label></td>
</tr>
<tr>
<td>所属省市县</td>
<td>
<asp:Label runat="server" ID="lblrCdNm"></asp:Label>
<asp:Label runat="server" ID="lblctyNm"></asp:Label>
<asp:Label runat="server" ID="lblcntyNm"></asp:Label>
</td>
</tr>
<tr>
<td>车主/业户</td>
<td><asp:Label runat="server" ID="lblcmpNm"></asp:Label></td>
</tr>
<tr>
<td>联系人</td>
<td><asp:Label runat="server" ID="lblvclWnrNm"></asp:Label></td>
</tr>
<tr>
<td>联系人手机</td>
<td><asp:Label runat="server" ID="lblvclWnrPhn"></asp:Label></td>
</tr>
<tr>
<td>车辆识别代码/车架号</td>
<td><asp:Label runat="server" ID="lblvin"></asp:Label></td>
</tr>
<tr>
<td>车牌号</td>
<td>
<asp:Label runat="server" ID="lblvclN"></asp:Label>
<asp:Label runat="server" ID="lblpltClr"></asp:Label>
</td>
</tr>
<tr>
<td>车辆类型  </td>
<td><asp:Label runat="server" ID="lblvclTpNm"></asp:Label></td>
</tr>
<tr>
<td>车辆品牌</td>
<td><asp:Label runat="server" ID="lblvbrndCdNm"></asp:Label></td>
</tr>
<tr>
<td>车辆型号</td>
<td><asp:Label runat="server" ID="lblprdCdNm"></asp:Label></td>
</tr>
<tr>
<td>总质量(kg)</td>
<td><asp:Label runat="server" ID="lblvclTn"></asp:Label></td>
</tr>
<tr>
<td>核定载质量(kg)</td>
<td><asp:Label runat="server" ID="lblldTn"></asp:Label></td>
</tr>
<tr>
<td>准牵引总质量(kg)</td>
<td><asp:Label runat="server" ID="lblvclDrwTn"></asp:Label></td>
</tr>
<tr>
<td>外廓尺寸(mm)</td>
<td>
<asp:Label runat="server" ID="lblvclSize"></asp:Label>
</td>
</tr>
<tr>
<td>货厢内部尺寸(mm)</td>
<td>
<asp:Label runat="server" ID="lblboxSize"></asp:Label>
</td>
</tr>
<tr>
<td>轴数</td>
<td><asp:Label runat="server" ID="lblvclAxs"></asp:Label></td>
</tr>
<tr>
<td>审核人名称</td>
<td><asp:Label runat="server" ID="lbladtrNm"></asp:Label></td>
</tr>
<tr>
<td>审核时间</td>
<td><asp:Label runat="server" ID="lbladtTm"></asp:Label></td>
</tr>
<tr>
<td>有效期时间 </td>
<td><asp:Label runat="server" ID="lblvdtTm"></asp:Label></td>
</tr>
<tr>
<td>车主手机号验证状态 </td>
<td><asp:Label runat="server" ID="lblvrfySt"></asp:Label></td>
</tr>
</table>
</div>
<div>
<asp:Label runat="server" ID="lblError"></asp:Label>
</div>
</form>
</body>
</html>
b)aspx.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Script.Serialization;
using System.Net;
using System.IO;
using Encrypt;

namespace GoodsVehicleTest
{
public partial class GoodsVehicle2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
btnSearch.Click += new EventHandler(btnSearch_Click);
}

void btnSearch_Click(object sender, EventArgs e)
{
//设置参数并加密
string dtNow = ConvertDateTimeInt(DateTime.Now); //转化为时间戳
string str = "type=xxx&user=xxx&T=" + dtNow;//设置传输参数
string strEn=Encrypt.Security.EnCode(str);//加密

System.Net.WebClient client = new System.Net.WebClient();
string reply = client.DownloadString("http://xxx/vinfos?p=" + strEn); //http地址并返回结果
string DeReply = Encrypt.Security.DeCode(reply);//解密

//处理返回值
string jsona = @DeReply;//这里的@是不要转义的意思
JavaScriptSerializer jscvt = new JavaScriptSerializer();
QueryVehicleReq objQuery = jscvt.Deserialize<QueryVehicleReq>(jsona); //将jsona字符串转变成指定类型对象
//判断结果
switch (objQuery.status)
{
case 1: break;
case 2: ShowErrorMessage("用户认证失败"); return;
case 3: ShowErrorMessage("系统异常"); return;
case 4: ShowErrorMessage("没有查询到数据"); return;
case 5: ShowErrorMessage("查询字段不能为空"); return;
case 6: ShowErrorMessage("查询超过次数限制"); return;
case 7: ShowErrorMessage("其它"); return;
case 8: ShowErrorMessage("非法请求"); return;
}
//显示数据
if (objQuery.status==1)
{
lbltmc.Text = objQuery.List[0].tmc;
lblcmdr.Text = objQuery.List[0].cmdr;
lblrCdNm.Text = objQuery.List[0].rCdNm;
lblctyNm.Text = objQuery.List[0].ctyNm;
lblcntyNm.Text = objQuery.List[0].cntyNm;
lblcmpNm.Text = objQuery.List[0].cmpNm;
lblvclWnrNm.Text = objQuery.List[0].vclWnrNm;
lblvclWnrPhn.Text = objQuery.List[0].vclWnrPhn;
lblvin.Text = objQuery.List[0].vin;
lblvclN.Text = objQuery.List[0].vclN;
lblpltClr.Text = GetPlateColor(objQuery.List[0].pltClr);
lblvclTpNm.Text = objQuery.List[0].vclTpNm;
lblvbrndCdNm.Text = objQuery.List[0].vbrndCdNm;
lblprdCdNm.Text = objQuery.List[0].prdCdNm;
lblvclTn.Text = objQuery.List[0].vclTn;
lblldTn.Text = objQuery.List[0].ldTn;
lblvclDrwTn.Text = objQuery.List[0].vclDrwTn;
lblvclSize.Text = objQuery.List[0].vclSize;
lblboxSize.Text = objQuery.List[0].boxSize;
lblvclAxs.Text = objQuery.List[0].vclAxs.ToString();
lbladtrNm.Text = objQuery.List[0].adtrNm.ToString();
lbladtTm.Text = objQuery.List[0].adtTm;
lblvdtTm.Text = objQuery.List[0].vdtTm;
lblvrfySt.Text = objQuery.List[0].vrfySt;
}
}

/// <summary>
/// 获取车牌颜色
/// </summary>
/// <param name="type"></param>
/// <returns></returns>
public static string GetPlateColor(string type)
{
switch (type)
{
case "1":
return "蓝";
case "2":
return "黑";
case "3":
return "白";
case "4":
return "黄";
case "5":
return "农黄";
case "8":
return "绿";
case "9":
return "其他";
default:
return "未知(" + type.ToString() + ")";
}
}

/// <summary>
/// DateTime时间格式转换为Unix时间戳格式
/// </summary>
/// <param name="time"> DateTime时间格式</param>
/// <returns>Unix时间戳格式</returns>
public static string ConvertDateTimeInt(System.DateTime time)
{
System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1));
return Convert.ToInt64((time - startTime).TotalMilliseconds).ToString();
}

/// <summary>
/// 时间戳转为C#格式时间
/// </summary>
/// <param name=”timeStamp”></param>
/// <returns></returns>
private DateTime GetTime(string timeStamp)
{
DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));
long lTime = long.Parse(timeStamp + "0000000");
TimeSpan toNow = new TimeSpan(lTime);
return dtStart.Add(toNow);
}

/// <summary>
/// 显示错误信息
/// </summary>
/// <param name="str"></param>
public void ShowErrorMessage(string str)
{
lblError.Text = str;
}
}
}
c)QueryVehicleReq.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace GoodsVehicleTest
{
/// <summary>
/// 车辆信息查询
/// </summary>
[Serializable]
public class QueryVehicleReq
{
private VehicleInfo[] m_List;
private string m_remark;
private int m_status;

/// <summary>
/// 备注
/// </summary>
public VehicleInfo[] List
{
get { return m_List; }
set { m_List = value; }
}

/// <summary>
/// 备注
/// </summary>
public string remark
{
get { return m_remark; }
set { m_remark = value; }
}

/// <summary>
/// 查询状态
/// </summary>
public int status
{
get { return m_status; }
set { m_status = value; }
}
}
}
d)VehicleInfo.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace GoodsVehicleTest
{
/// <summary>
/// 车辆信息
/// </summary>
[Serializable]
public class VehicleInfo
{
private string m_rCdNm;
private string m_ctyNm;
private string m_cmdr;
private string m_cmpNm;
private string m_cntyNm;
private string m_ldTn;
private string m_pltClr;
private string m_prdCdNm;
private string m_tmc;
private string m_vbrndCdNm;
private string m_vclAxs;
private string m_vclDrwTn;
private string m_vclHgt;
private string m_vclLng;
private string m_boxLng;
private string m_boxWdt;
private string m_boxHgt;
private string m_adtrNm;
private string m_vclN;
private string m_vclWnrNm;
private string m_vclWnrPhn;
private string m_vclTn;
private string m_vclTpNm;
private string m_vclWdt;
private string m_vin;
private string m_adtTm;
private string m_vdtTm;
private string m_vrfySt;

/// <summary>
/// 终端 ID
/// </summary>
public string tmc
{
get { return m_tmc; }
set { m_tmc = value; }
}

/// <summary>
/// SIM 卡卡号
/// </summary>
public string cmdr
{
get { return m_cmdr; }
set { m_cmdr = value; }
}

/// <summary>
/// 所属省
/// </summary>
public string rCdNm
{
get { return m_rCdNm; }
set { m_rCdNm = value; }
}

/// <summary>
/// 所属市
/// </summary>
public string ctyNm
{
get { return m_ctyNm; }
set { m_ctyNm = value; }
}

/// <summary>
/// 所属县
/// </summary>
public string cntyNm
{
get { return m_cntyNm; }
set { m_cntyNm = value; }
}

/// <summary>
/// 车主/业户
/// </summary>
public string cmpNm
{
get { return m_cmpNm; }
set { m_cmpNm = value; }
}

/// <summary>
/// 联系人
/// </summary>
public string vclWnrNm
{
get { return m_vclWnrNm; }
set { m_vclWnrNm = value; }
}

/// <summary>
/// 联系人手机
/// </summary>
public string vclWnrPhn
{
get { return m_vclWnrPhn; }
set { m_vclWnrPhn = value; }
}

/// <summary>
/// 车辆识别代码/车架号
/// </summary>
public string vin
{
get { return m_vin; }
set { m_vin = value; }
}

/// <summary>
/// 车牌号
/// </summary>
public string vclN
{
get { return m_vclN; }
set { m_vclN = value; }
}

/// <summary>
/// 车牌颜色
/// </summary>
public string pltClr
{
get { return m_pltClr; }
set { m_pltClr = value; }
}

/// <summary>
/// 车辆类型
/// </summary>
public string vclTpNm
{
get { return m_vclTpNm; }
set { m_vclTpNm = value; }
}

/// <summary>
/// 车辆品牌
/// </summary>
public string vbrndCdNm
{
get { return m_vbrndCdNm; }
set { m_vbrndCdNm = value; }
}

/// <summary>
/// 车辆型号
/// </summary>
public string prdCdNm
{
get { return m_prdCdNm; }
set { m_prdCdNm = value; }
}

/// <summary>
/// 总质量(kg)
/// </summary>
public string vclTn
{
get { return m_vclTn; }
set { m_vclTn = value; }
}

/// <summary>
/// 核定载质量(kg)
/// </summary>
public string ldTn
{
get { return m_ldTn; }
set { m_ldTn = value; }
}

/// <summary>
/// 准牵引总质量(kg)
/// </summary>
public string vclDrwTn
{
get { return m_vclDrwTn; }
set { m_vclDrwTn = value; }
}

/// <summary>
/// 外廓尺寸-长(mm)
/// </summary>
public string vclLng
{
get { return m_vclLng; }
set { m_vclLng = value; }
}

/// <summary>
/// 外廓尺寸-宽(mm)
/// </summary>
public string vclWdt
{
get { return m_vclWdt; }
set { m_vclWdt = value; }
}

/// <summary>
/// 外廓尺寸-高(mm)
/// </summary>
public string vclHgt
{
get { return m_vclHgt; }
set { m_vclHgt = value; }
}

/// <summary>
/// 外廓尺寸(mm)
/// </summary>
public virtual string vclSize
{
get { return m_vclLng  + "(长) x " + m_vclWdt + "(宽) x " + m_vclHgt + "(高)"; }
}

/// <summary>
/// 货厢内部尺寸长(mm)
/// </summary>
public string boxLng
{
get { return m_boxLng; }
set { m_boxLng = value; }
}

/// <summary>
/// 货厢内部尺寸宽(mm)
/// </summary>
public string boxWdt
{
get { return m_boxWdt; }
set { m_boxWdt = value; }
}

/// <summary>
/// 货厢内部尺寸高(mm)
/// </summary>
public string boxHgt
{
get { return m_boxHgt; }
set { m_boxHgt = value; }
}

/// <summary>
/// 货厢内部寸(mm)
/// </summary>
public virtual string boxSize
{
get { return m_boxLng + "(长) x " + m_boxWdt + "(宽) x " + m_boxHgt + "(高)"; }
}

/// <summary>
/// 轴数
/// </summary>
public string vclAxs
{
get { return m_vclAxs; }
set { m_vclAxs = value; }
}

/// <summary>
/// 审核人名称
/// </summary>
public string adtrNm
{
get { return m_adtrNm; }
set { m_adtrNm = value; }
}

/// <summary>
/// 审核时间
/// </summary>
public string adtTm
{
get { return m_adtTm; }
set { m_adtTm = value; }
}

/// <summary>
/// 有效期时间
/// </summary>
public string vdtTm
{
get { return m_vdtTm; }
set { m_vdtTm = value; }
}

/// <summary>
/// 车主手机号验证状态
/// </summary>
public string vrfySt
{
get { return m_vrfySt; }
set { m_vrfySt = value; }
}
}
}
(5)核心代码:

string str = "type=xxx&user=xxx&T=" + dtNow;//设置传输参数
string strEn=Encrypt.Security.EnCode(str);//加密

System.Net.WebClient client = new System.Net.WebClient();
string reply = client.DownloadString("http://xxx/BasisInfoInterface/vinfos?p=" + strEn); //http地址并返回结果
string DeReply = Encrypt.Security.DeCode(reply);//解密

//处理返回值
string jsona = @DeReply;//这里的@是不要转义的意思
JavaScriptSerializer jscvt = new JavaScriptSerializer();
QueryVehicleReq objQuery = jscvt.Deserialize<QueryVehicleReq>(jsona); //将jsona字符串转变成指定类型对象
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: