Fiddler进行模拟Post提交json数据,总为null解决方式

2014年11月5日 开发日志 评论已被关闭

Request Headers:

User-Agent: Fiddler
Host: localhost:3248
Content-Type: application/json; charset=utf-8
Content-Length: 63

要加上Content-Type: application/json; charset=utf-8,要不是JSON没效

Request Body

{“UserID”:4,”UserName”:”Parry”,”UserEmail”:”Parry@cnblogs.com”}

紧记,不要写成这样:[{“UserID”:4,”UserName”:”Parry”,”UserEmail”:”Parry@cnblogs.com”}]

WinCE http 开发注意事项

2014年11月4日 开发日志 评论已被关闭

WinCE winform 开发注意事项
环境
client:Microsoft wince5/wince6 .net compact framework3.5
server:iis7.5 Microsoft MVC3

编写目的
本篇主要描述wince下的.net winform开发,以及开发注意事项。

注意事项
1.HttpWebRequest
在.net compact framework 下不支持 CookieContainer,解决方案通过http header增加cookie来解决 登录session。示例代码如下:
var postData = Encoding.UTF8.GetBytes(postString);
// 设置提交的相关参数
_request = WebRequest.Create(uri) as HttpWebRequest;
_request.Method = “POST”;

_request.AllowWriteStreamBuffering = false;

_request.KeepAlive = true;

_request.ContentType = “application/x-www-form-urlencoded”;
_request.ContentLength = postData.Length;
if (!string.IsNullOrEmpty(_cookie))// 登录后每次请求服务端在http header 上带入 session.
_request.Headers.Add(“Cookie”, _cookie);

// 提交请求数据
_outputStream = _request.GetRequestStream();
_outputStream.Write(postData, 0, postData.Length);
_outputStream.Close();

// 接收返回的页面
_response = _request.GetResponse() as HttpWebResponse;
_responseStream = _response.GetResponseStream();
_reader = new System.IO.StreamReader(_responseStream, Encoding.UTF8);
_srcString = _reader.ReadToEnd();
string statusCode = _response.StatusCode.ToString();

string tmpCookie = _response.Headers.Get(“Set-Cookie”);
string applicationName = AppConfig.GetConfigValue(“ApplicationName”);
if (tmpCookie.Contains(applicationName))//得到form登录后的 set-cookie
_cookie = _response.Headers.Get(“Set-Cookie”);
_reader.Close();
_response.Close();
return _srcString;

2. 对https请求
https通过ssl一个加密压缩的安全协议。在.net compact framwork 环境下我们默认通过HttpWebRequest是无法获正常获取
https请求的,程序会报Could not establish secure channel for SSL/TLS。.netframework 解决方案不适用于.net compact framework。示例代码如下:

定义相关类:
public class TrustAllCertificatePolicy : System.Net.ICertificatePolicy
{

public TrustAllCertificatePolicy()

{ }

public bool CheckValidationResult(ServicePoint sp,

X509Certificate cert, WebRequest req, int problem)
{

return true;

}
}
调用:
public static string HttpPostMethod(string uri, string postString)
{
//信任https安全证书
System.Net.ServicePointManager.CertificatePolicy = new TrustAllCertificatePolicy();

var postData = Encoding.UTF8.GetBytes(postString);
_request = WebRequest.Create(uri) as HttpWebRequest;
_request.Method = “POST”;
_request.AllowWriteStreamBuffering = false;

3.HttpWebRequest 异步请求
在.net compact framework 下我们可以通过HttpWebRequest进行异步请求,比如我们在下载服务器上大文件有一定的帮助。
示例代码如下:
private HttpWebRequest m_req;
m_req = (HttpWebRequest)HttpWebRequest.Create(string.Format(@”{0}/{1}”, domainApp, m_UpgraderFilePath));
//ResponseReceived 为异步委托方法。
m_req.BeginGetResponse(new AsyncCallback(ResponseReceived), null);

4. 其他

在.net framework copmact 下读取文本文件、读取.config文件、读取ini文件,均需要自己手动实现。具体代码略。

注:

上文中未提及ASP.NET MVC3内容,在本例中MVC3只是作为后台的服务,每个服务端JsonResult方法只是做为http接口。
使用 http 协议而不用 soap(webservice/ wcf) 协议,就微软的技术来讲是个未来的趋势。由于项目开发周期的原因,未将Web API 引入。
在由wince client端使用 .net 大名鼎鼎的开源类库 .Newtonsoft.Json.Compact 将json数据转成相应C#实体。

 

http://www.cnblogs.com/ryanding/archive/2012/05/31/2527861.html

jQuery — 如何为动态添加的元素绑定事件处理函数

2014年10月21日 开发日志 评论已被关闭

有一段时间没用jquery了,今天又碰到这个问题。当时是知道有livejquery可以解决。但是我并不喜欢为了这个而另外加载一个。我当时的处理方法是在添加的时候手工绑定事件处理函数。不过新版的jquery已经添加了这个功能。我们已经不需要为此烦恼了。

参考:http://api.jquery.com/live/

以前我们定义事件,比如为元素定义单击事件是这样写的:

$(‘input’).click(function () {

//处理代码

});

$(‘.clickme’).bind(‘click’, function() {
// Bound handler called.
});

但是这只能是对已经加载好的元素定义事件,那些后来添加插入的元素则需要另行绑定。即使你使用jquery的clone函数,它并不能将事件也复制(到目前为止我还不清楚它是为什么这样定义,是没法复制还是刻意这么处理,以防止出现某些异常,这还有待去分析一下jquery的源代码)。

现在,使用live你可以轻松搞定,

$('.clickme').live('click', function() {
  // Live handler called.
});
这样,你即使在后面动态插入的元素,也会被绑定事件,
$('body').append('<div>Another target</div>');


测试有效

//长按移除 支持动态添加元素
$(document).on(“pageinit”, “#rkpage”, function () {

$(‘li’).live(‘taphold’, function () {
if (confirm(‘确认要删除此项?’)) {
$(this).remove();
}
});

 

不支持动态添加的元素

//$(document).on(“pageinit”,”#rkpage”,function(){
// $(“li”).on(“taphold”,function(){
// if (confirm(‘确认要删除此项?’)) {
// $(this).remove();
// }
// });
//});

 

微软MVC3框架下JqueryMobile Ajax的实现(以更新ListView为例)

2014年10月21日 开发日志 评论已被关闭

jquery mobile页面跳转后js不执行的问题

2014年10月21日 开发日志 评论已被关闭

2014年10月5日 开发日志 评论已被关闭

SQL关闭自增长列标识:SET IDENTITY_INSERT,实现插入时,写入自动增长id的值

2014年9月19日 开发日志 评论已被关闭

.net 4.0 ValidateRequest

2014年9月9日 开发日志 1 条评论

ultragrid 虚表及延迟加载

2014年8月5日 开发笔记 评论已被关闭

sql in 语句,传递字符串,不拆分也可以作为条件

2014年6月16日 开发日志 评论已被关闭