您的位置:首页 > 理论基础 > 计算机网络

silverlight HttpWebRequest post请求数据

2011-05-11 17:23 615 查看
public static List<RequestReturnValue> resultDataSet;

public MainPage()

{

InitializeComponent(); //设置当前界面线程

syncContext = SynchronizationContext.Current;

}

private SynchronizationContext syncContext;

private String postData = String.Empty;

private void PostData(object sender, RoutedEventArgs e)

{

//请注意:Silverlight 里的 HttpWebRequest, Encoding 类的属性和方法与常规的 .NET Framework 里面还是不同的。

result.Text = "开始提交数据……";

postData = "paramXml=" + data.Text; //要提交的内容

Uri url = new Uri("http://128.128.4.189:131/", UriKind.Absolute);

System.Net.HttpWebRequest request = (System.Net.HttpWebRequest)WebRequest.Create(url);

request.Method = "POST"; // Silverlight 只支持 GET 和 POST 方法

request.AllowReadStreamBuffering = true;

request.ContentType = "application/x-www-form-urlencoded";

request.BeginGetRequestStream(new AsyncCallback(RequestReady), request);

}

private void RequestReady(IAsyncResult asyncResult)

{

HttpWebRequest request = asyncResult.AsyncState as HttpWebRequest;

StreamWriter postStream = new StreamWriter(request.EndGetRequestStream(asyncResult));

//byte[] byteArray = Encoding.UTF8.GetBytes(postData); //Encoding.GetEncoding()方法只支持四种编码。utf-8 , utf-16 , utf-16BE , utf-16LE

postStream.Write(postData); //处理中文的问题。不要使用 Stream 的 Write 方法。

postStream.Close();

postStream.Dispose();

request.BeginGetResponse(new AsyncCallback(ResponseReady), request);

}

void ResponseReady(IAsyncResult asyncResult)

{

HttpWebRequest request = asyncResult.AsyncState as HttpWebRequest;

WebResponse response = request.EndGetResponse(asyncResult) as WebResponse; //同步线程上下文

if (syncContext == null) syncContext = new SynchronizationContext();

syncContext.Post(ExtractResponse, response);

}

private void ExtractResponse(object state)

{

WebResponse response = state as WebResponse;

Stream responseStream = response.GetResponseStream();

StreamReader streamRead = new StreamReader(responseStream); //显示返回的数据

result.Text = new StreamReader(responseStream).ReadToEnd();

response.Close();

responseStream.Close();

responseStream.Dispose();

streamRead.Close();

streamRead.Dispose();

}

private string getResult(string paramXml,int timeout)

{

string valuecode =System.Guid.NewGuid().ToString().Replace("-","");

string returnValue = "";

DateTime startDate=DateTime.Now;

bool flag = true;

while (flag)

{

// Demo(paramXml, valuecode);

TimeSpan ts = DateTime.Now - startDate;

if (ts.Seconds >= timeout)

{

flag = false;

}

for (int i = 0; i < resultDataSet.Count; i++)

{

if (resultDataSet[i].Key == valuecode)

{

flag = false;

returnValue = resultDataSet[i].Value;

lock (resultDataSet)

{

resultDataSet.RemoveAt(i);

}

break;

}

}

Thread.Sleep(100);

}

return returnValue;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: