我在winform程序发送请求,服务端处理后返回数据,请问服务端程序如何实现处理这个。
以下是winform发送请求程序
PostData为发送到服务端的数据流
Stream reStream = null; //返回
cookie = null;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.ContentType = "application/x-www-form-urlencoded";
request.ContentType = "text/html; charset=gb2312";
request.KeepAlive = false;
request.Method = "POST";
request.AllowAutoRedirect = false;
request.CookieContainer = new CookieContainer();
byte[] buffer= new byte[postData.Length];
postData.Read(buffer, 0, buffer.Length);
request.ContentLength = buffer.Length;
Stream pstream = request.GetRequestStream();
pstream .Write(buffer, 0, buffer.Length);
pstream .Close(); HttpWebResponse response = (HttpWebResponse)request.GetResponse();
cookie = request.CookieContainer;
reStream = CopyStream(response.GetResponseStream());
return reStream;
以下是winform发送请求程序
PostData为发送到服务端的数据流
Stream reStream = null; //返回
cookie = null;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.ContentType = "application/x-www-form-urlencoded";
request.ContentType = "text/html; charset=gb2312";
request.KeepAlive = false;
request.Method = "POST";
request.AllowAutoRedirect = false;
request.CookieContainer = new CookieContainer();
byte[] buffer= new byte[postData.Length];
postData.Read(buffer, 0, buffer.Length);
request.ContentLength = buffer.Length;
Stream pstream = request.GetRequestStream();
pstream .Write(buffer, 0, buffer.Length);
pstream .Close(); HttpWebResponse response = (HttpWebResponse)request.GetResponse();
cookie = request.CookieContainer;
reStream = CopyStream(response.GetResponseStream());
return reStream;
解决方案 »
- C# winform treeview的子节点中可以添加控件么?
- 请教大虾们:手持终端编程,要用com通讯,花钱买也行,要源码,
- 在重写一些方法的时候,base的位置
- win7下C#实现Areo效果后文本问题
- 什么是真正的.net高手.
- 一个ADO.NET超时的问题?有经验的朋友进来,最好是有大型网站管理经验的人
- using (FileStream fileStream = File.OpenRead(path))报路径访问被拒绝,要怎么改~~~
- 如何转换?
- c# 写一个程序,能将人民币金额从阿拉伯数字转换为大写汉字表示。例如,把1234.56转换为壹仟贰佰叁拾肆圆零伍角陆分。(请提供源码)
- 比较简单的问题:
- 在C#中,如何调用Windows提供的搜索功能
- 如何让一个已经运行的外部程序最小化到托盘,或者隐藏掉
如果不是WebService, 发url请求后,Request接收到参数 服务器端以流的形式返会数据
客户端通过url传递参数:例如你请求的地址是 http://www.163.com?type=画图服务器端就 Request["type"] 参数
判断参数是什么做出不同响应
你这里的客户端只是变成了你自己的winform而已
流程是这样的:
1 客户端向服务器发请求
CString url = "www.163.com/id=100";
WebRequest myWebRequest = WebRequest.Create(url);
myWebRequest.Timeout=10000;2 服务器端受到请求
用 CString strid = request["id"];接收参数 如果url没有参数就不用接收
得到参数你做什么处理就是你的事了 然后 把处理后的数据 Response.wirte 出来3
客户端收数据
WebResponse myWebResponse = myWebRequest.GetResponse();
Stream ReceiveStream = myWebResponse.GetResponseStream();
Encoding encode = System.Text.Encoding.GetEncoding(encoding);
StreamReader readStream = new StreamReader( ReceiveStream, encode );
readStream 就是从服务器端得到的数据 是图像是文字你自己操作吧
用 CString strid = request["id"];接收参数 如果url没有参数就不用接收
得到参数你做什么处理就是你的事了 然后 把处理后的数据 Response.wirte 出来
在什么事件中获取啊?
cookie = null;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.ContentType = "application/x-www-form-urlencoded";
request.ContentType = "text/html; charset=gb2312";
request.KeepAlive = false;
request.Method = "POST";
request.AllowAutoRedirect = false;
request.CookieContainer = new CookieContainer();
byte[] buffer= new byte[postData.Length];
postData.Read(buffer, 0, buffer.Length);
request.ContentLength = buffer.Length;
Stream pstream = request.GetRequestStream();
pstream .Write(buffer, 0, buffer.Length);
pstream .Close(); HttpWebResponse response = (HttpWebResponse)request.GetResponse();
cookie = request.CookieContainer;
reStream = CopyStream(response.GetResponseStream());
return reStream;
你看看上面的代码,我的请求中给服务器中传输的是数据流postData,我要在服务端获取该数据流,其实就是xml,我在服务端解析xml并处里,然后返回数据流。和你说的接收参数有关系吗?这个数据流如何获取,在什么服务器端什么事件获取,我一直不明白这个怎么处理。
在page_load事件中Request.Form.Count=0;获取不到啊。
我猜你的要求是通过HTTP POST 方式发送XML字符串到服务器端
如果是这样
request.ContentType = "application/x-www-form-urlencoded";
request.ContentType = "text/html; charset=gb2312";
改为
request.ContentType = "text/xml;";可以在ASP.net里建个空页面 在page_load里作处理
处理代码大概如下
using (StreamReader readStream = new StreamReader(Request.InputStream, Encoding.Default))
{
result = readStream.ReadToEnd();
}
Response.Write(result);
/// <summary>
/// Post Data to a Url by Http Get Method
/// </summary>
/// <param name="Url">Destination Url</param>
/// <param name="TimeOut">Timeout in seconds</param>
/// <returns>Content of response</returns>
private static string HttpGet(string Url, int TimeOut)
{
string rawOutput = ""; //Prepare the WebRequest
HttpWebRequest Req = (HttpWebRequest)WebRequest.Create(Url);
Req.Timeout = TimeOut * 1000; try
{
HttpWebResponse Resp = (HttpWebResponse)Req.GetResponse(); //Read Response
StreamReader RespReader = new StreamReader(Resp.GetResponseStream());
rawOutput = RespReader.ReadToEnd();
RespReader.Close();
}
catch (WebException Ex)
{
} return rawOutput;
}
#endregion