读书人

HttpListener对象经过http传入参数读取

发布时间: 2013-08-01 15:23:18 作者: rapoo

HttpListener对象通过http传入参数读取app.xonfig列名无效和中文乱码
http://localhost:8080/web/?USERID=221122&MOBILE_NO=1500166624,1342655556&SMS_CONTENT=233222中文
<add key="smscanshu" value="SMS_CONTENT"/>
string canshu4 = System.Configuration.ConfigurationManager.AppSettings["smscanshu"].ToString();
1.我通过读取app.config的参数明明传入的是233222中文 ,但是通过string c HttpListenerContext.Request.QueryString[canshu4];
既然是233222

2.在sql执行insert into SMS_MT([GUID],[USERID],NEED_DOWN_TIME,FACT_DOWN_TIME,MOBILE_NO,SMS_CLENGTH,SMS_CONTENT) values(newid(),'a333',getdate(),dateadd(second,2,getdate()),'1500166624','10','233222')可以
但是程序里就进catch说列名USERID无效
SqlCommand comm = new SqlCommand(string.Format("insert into SMS_MT([GUID],[USERID],NEED_DOWN_TIME,FACT_DOWN_TIME,MOBILE_NO,SMS_CLENGTH,SMS_CONTENT) values(newid(),'"+cc+"',getdate(),dateadd(second,2,getdate()),'" + q1 + "','" + LCONTENT + "','" + SMS_CONTENT + "')"), conn);
conn.Open();
comm.ExecuteNonQuery();
conn.Close(); 乱码
[解决办法]
第一个问题,看看你的编码格式
第二个问题,调试取到你的sql语句放到数据库执行或提出来看看
[解决办法]

        public static Dictionary<string, string> EncodeQueryString(this Uri uri)
{
var ret = new Dictionary<string, string>();
var q = uri.Query;
if (q.Length > 0)


{
foreach (var p in q.Substring(1).Split('&'))
{
var s = p.Split(new char[] { '=' }, 2);
ret.Add(HttpUtility.UrlDecode(s[0]), HttpUtility.UrlDecode(s[1]));
}
}
return ret;
}

读书人网 >C#

热点推荐