我在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;

解决方案 »

  1.   

    如果服务器端是WebService就好做了,直接调用接口,返回数据
    如果不是WebService, 发url请求后,Request接收到参数 服务器端以流的形式返会数据
      

  2.   

    如果是Web服务端,就用Request.Forms来获取!
      

  3.   

    不用WebService,能说的详细一些吗,给点代码看看。谢谢
      

  4.   

    代码我手头也没有,思路就是这样的,服务器端接收到参数后,根据参数作不同做处理,然后Response.write(要返回的资源)
      

  5.   

    对就是这个思路
    客户端通过url传递参数:例如你请求的地址是 http://www.163.com?type=画图服务器端就 Request["type"] 参数
    判断参数是什么做出不同响应
      

  6.   

    你去看一下在页面上提交一个form,Server端是怎么获取客户端的请求内容的。
    你这里的客户端只是变成了你自己的winform而已
      

  7.   

    客户端的post请求会触发服务端什么事件吗?
      

  8.   

    晕 还不知道啊!!
    流程是这样的:
    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 就是从服务器端得到的数据 是图像是文字你自己操作吧
                                  
      

  9.   

    2 服务器端受到请求
    用 CString strid = request["id"];接收参数 如果url没有参数就不用接收
    得到参数你做什么处理就是你的事了 然后 把处理后的数据 Response.wirte 出来
    在什么事件中获取啊?
      

  10.   

    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;
    你看看上面的代码,我的请求中给服务器中传输的是数据流postData,我要在服务端获取该数据流,其实就是xml,我在服务端解析xml并处里,然后返回数据流。和你说的接收参数有关系吗?这个数据流如何获取,在什么服务器端什么事件获取,我一直不明白这个怎么处理。
      

  11.   

    代码应该没什么毛病,可以在.net里建个空页面 在page_load里作处理
      

  12.   

    十分谢谢,但是
    在page_load事件中Request.Form.Count=0;获取不到啊。
      

  13.   

    为了100分,还是说说话
    我猜你的要求是通过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);
      

  14.   

    Client使用WinForm,发送使用WebHttpRequest,接收使用WebHttpResponse,这点没有问题。Server应该使用Web Server,设立一个aspx页面,内容为空,在Page_Load事件处理。如果发送的是http://xxx.xxx.xxx?req=画图这样的格式,使用Request.QueryString来获取,比如Request.QueryString["req"].ToString(),这样就获得了"画图"。注意,请使用Request.QueryString.AllKeys.Count>0来判断是否有参数,不然会出现Exception。回复请使用Response.Write(string Content)如果发送的是Post,则使用Request.Form("Req"),这样就获得了"画图"这个字符串。你的代码使用的是Post方法来传送数据。所以接收不到是正常的。以下为Get代码的实现,Url参数直接使用http://xxx.xxx.xxx?req=画图 这样的格式就可以了。#region HttpGet function
    /// <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
      

  15.   

    谢谢songcan(当爱已成往事)兄等的帮助,songcan(当爱已成往事)兄的方法基本可以,我如何返回流呢,比如将我传入的流返回。
      

  16.   

    我的vs.net在调试时int型变量怎么都变成16进制表示了,能否改为10进制啊。