下面紧接着来一个提交带参数的例程
同样给出webservice里面POST的方法
图1
然后给出我网站后台怎么调用这个方法的
[C#] syntaxhighlighter_viewsource syntaxhighlighter_copycode [WebMethod]
public string userLogin(string loginName, string password)
{
//password为loginName与实际的password一起加密后的值
string key = MD5.CurKey();
password = MD5.EncryptString(loginName + password, key);
string[] prototype = new string[] { "operatorID", "loginName", "name", "disabled", "role", "companyID" };
List<Dictionary<string, object>> list = basedao.findMapByProperties("T_P_Operator", prototype, "loginName='" + loginName + "' and password = '" + password + "'");
if (list.Count == 0)
{
return "0";//用户名或者密码错误
}
else
{
if (Int32.Parse(list[0]["disabled"] + "") == 1)
{
return "1";//登录成功
}
else
{
return "2";//用户被禁用
}
}
看到了吧 ,只要输入用户名密码正确,就返回1,否则返回0,
下面给出一个用户名:23123 ,密码: 123456 ,的用户,用808试返回值
这个就涉及到发送数据了
我们根据本楼的图1 构造数据”loginName=23123&password=123456“ ,这就是我们要向服务器提交的字符,这个加上末尾的“\r\n",有33个字节
其中AT+HTTPDATA=0,1000 意思就是把现在缓存区里面的东西先清空
然后AT+HTTPDATA=33,20000 ,意思是需要填入缓冲器33个字节(这个就要每次提交的时候算一下了),并且最大在20秒内结束填充,当然你在变成的时候,9600的波特率,1000个字节内,后面那个写成2000足够了,因为这个808会检测,当你提交到33个字节后,会自动完成提交,不管时间到没到,都会显示OK。并且这个提交完了只会显示OK,不会回显你提交的内容。
为了保险,我们用AT+HTTPREAD 来看看刚才在缓冲区里面提交的什么,最后同样的调用AT+HTTPACTION=1 来POST
(细心的同学会发现,在webservice要求里面 不是要求要有Content-Length: length,这个length参数么?我之前写的C语言提交版本确实要这个参数,但是这个808里面不必管它,它会自动算出,并且提交,所以提交的DATA里面也不用写这一行)
同样 POST过后 单片机要写等待机制,等服务器返回信息 同样的 一定要等到返回200 才算正确啊
最后用AT+HTTPREAD来查看服务器返回的信息 我们可以看到确实返回了个1,当然还包含其他<>的标签内容。这个时候,单片机也要做相应的解析
|