2月9
学了一段时间的ASP了,也给其他客户做过一些动态网站之类的。但是做这种CP类的编程还是第一次。原来也用过chinabank的网上银行收银系统,但那是别人做好的。今天从某位帅哥那弄来了SP的接入账号和其他一些相关资料。开始了CP编程之路。
首先碰到的是一个编码的问题。
测试的时候服务器返回-report usernumber=158********&usernumbertype=0&itemid=321***&gatename=mobile&feetype=2&loginservers=smdispatch,smdispatch1,smdispatch2,&state=5&statemsg:=B8C3D6B8C1EED6BBD4CAD0EDC1AAC3CBBACFD7F7B7BDCAB9D3C3
为了弄清statemsg中包含的错误内容,于是我写了下面一段程序:
用这个
statemsg=“B8C3D6B8C1EED6BBD4CAD0EDC1AAC3CBBACFD7F7B7BDCAB9D3C3”
Response.Write tochinese(code)
解码过来,为“该指令只允许联盟合作方使用”。哪里出问题了明天在研究,希望对大家有点帮助。
首先碰到的是一个编码的问题。
加码规则说明:
加码时将字符串中的所有字符转换成其对应的ASCII值的16进制值,例如:“A”的ASCII码值为65,以16进制值表示为41,故应发送两个字符“41”以代表字符“A”。示例:msg:=41代表msg=A
对于汉字则以其内码的16进制值来表示,如“测试”应为:B2E2CAD4。示例:msg:= B2E2CAD4表示的是msg=测试
参数中只要参数标识与内容之间用“:=”连接的都需要解码后方可使用,解码时将每两位当成其ASCII值的16进制值将其还原。
加码时将字符串中的所有字符转换成其对应的ASCII值的16进制值,例如:“A”的ASCII码值为65,以16进制值表示为41,故应发送两个字符“41”以代表字符“A”。示例:msg:=41代表msg=A
对于汉字则以其内码的16进制值来表示,如“测试”应为:B2E2CAD4。示例:msg:= B2E2CAD4表示的是msg=测试
参数中只要参数标识与内容之间用“:=”连接的都需要解码后方可使用,解码时将每两位当成其ASCII值的16进制值将其还原。
测试的时候服务器返回-report usernumber=158********&usernumbertype=0&itemid=321***&gatename=mobile&feetype=2&loginservers=smdispatch,smdispatch1,smdispatch2,&state=5&statemsg:=B8C3D6B8C1EED6BBD4CAD0EDC1AAC3CBBACFD7F7B7BDCAB9D3C3
为了弄清statemsg中包含的错误内容,于是我写了下面一段程序:
<%
function toASCII(msg)
on error resume next
msgpart=len(msg)/2
strReturn = ""
counter = 1
Do while counter < msgpart+1
strReturn = strReturn & Hex(Asc(Mid(msg, counter*2-1,2)))
If counter >msgpart then
exit do
end if
counter = counter+1
Loop
toASCII = strReturn
end function
function tochinese(msg)
on error resume next
msgpart=len(msg)/4
strReturn = ""
counter = 1
Do while counter < msgpart+1
strReturn = strReturn & Chr(Cint("&H" &Mid(msg, counter*4-3,4) &""))
If counter >msgpart then
exit do
end if
counter = counter+1
Loop
tochinese = strReturn
end function
%>
function toASCII(msg)
on error resume next
msgpart=len(msg)/2
strReturn = ""
counter = 1
Do while counter < msgpart+1
strReturn = strReturn & Hex(Asc(Mid(msg, counter*2-1,2)))
If counter >msgpart then
exit do
end if
counter = counter+1
Loop
toASCII = strReturn
end function
function tochinese(msg)
on error resume next
msgpart=len(msg)/4
strReturn = ""
counter = 1
Do while counter < msgpart+1
strReturn = strReturn & Chr(Cint("&H" &Mid(msg, counter*4-3,4) &""))
If counter >msgpart then
exit do
end if
counter = counter+1
Loop
tochinese = strReturn
end function
%>
用这个
statemsg=“B8C3D6B8C1EED6BBD4CAD0EDC1AAC3CBBACFD7F7B7BDCAB9D3C3”
Response.Write tochinese(code)
解码过来,为“该指令只允许联盟合作方使用”。哪里出问题了明天在研究,希望对大家有点帮助。
温家宝在英演讲遭干扰 中
写在成为CP(conte


23:05


