public static class Extensions { public static void PostFormAsync(this HttpWebRequest request, object parameters, AsyncCallback callback) { request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; request.BeginGetRequestStream(new AsyncCallback(asyncResult => { Stream stream = request.EndGetRequestStream(asyncResult); DataContractQueryStringSerializer ser = new DataContractQueryStringSerializer(); ser.WriteObject(stream, parameters); stream.Close(); request.BeginGetResponse(callback, request); }), request); } public static void PostMultiPartAsync(this HttpWebRequest request, object parameters, AsyncCallback callback) { request.Method = "POST"; string boundary = "---------------" + DateTime.Now.Ticks.ToString(); request.ContentType = "multipart/form-data; boundary=" + boundary; request.BeginGetRequestStream(new AsyncCallback(asyncResult => { Stream stream = request.EndGetRequestStream(asyncResult); DataContractMultiPartSerializer ser = new DataContractMultiPartSerializer(boundary); ser.WriteObject(stream, parameters); stream.Close(); request.BeginGetResponse(callback, request); }), request); } }