以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 DTD/XML Schema 』  (http://bbs.xml.org.cn/list.asp?boardid=23)
----  other question (代碼已通過test﹐結果也正常﹐有一個小問題﹐如下  (http://bbs.xml.org.cn/dispbbs.asp?boardid=23&rootid=&id=54043)


--  作者:f1029303
--  发布时间:10/18/2007 5:39:00 PM

--  other question (代碼已通過test﹐結果也正常﹐有一個小問題﹐如下
如果Http POST請求是windows form 程序一點問題都沒有.
如果是web form程序﹐結果是文件沒有創建,debug問題也沒有.

當然windows form程序和web form代碼一樣,請jim解答

//success script begin   httppost.txt

private void button1_Click(object sender, EventArgs e)
        {
             
            String   str ="xxxxxxxxxxxxxxxxxx";   
            byte[]   buffer   =   System.Text.Encoding.Default.GetBytes(str);  

            FileStream fs = new FileStream(@"E:\Training Doc\lotus address.txt", FileMode.Open);
            byte[] b = new byte[fs.Length];
            fs.Read(b, 0, b.Length);
            fs.Close();

           HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://10.139.8.107/HttpProcessorTest/default.aspx");
            request.Method = "POST";
            request.ContentLength = b.Length;
            request.ContentType = "application/x-www-form-urlencoded";
            Stream s = request.GetRequestStream();
            //此處有點改變
            s.Write(b, 0, b.Length);
            s.Close();  
        }

//success script end

//success script begin    httpprocess.HttpHandler.txt

public void ProcessRequest(HttpContext ctx)
        {
            try
            {
                Stream RcvStream = ctx.Request.InputStream;

                StreamReader ReadStrm = new StreamReader(RcvStream);
                ReqStr = ReadStrm.ReadToEnd();

                FileStream fs = new FileStream(@"C:\123456789.txt", FileMode.Create);
                StreamWriter sw = new StreamWriter(fs);
                sw.Write(ReqStr);
                sw.Close();
                fs.Close();
            }
            catch (Exception ex)
            {
                //Logger.LogInfo("Handle failed" + ex.ToString());
            }
        }

//success script end

[此贴子已经被作者于2007-10-19 11:31:29编辑过]

--  作者:f1029303
--  发布时间:10/19/2007 9:17:00 AM

--  
有沒有在server端利用response來接收數据例子


[此贴子已经被作者于2007-10-19 16:27:22编辑过]

--  作者:f1029303
--  发布时间:10/19/2007 9:21:00 AM

--  
up


[此贴子已经被作者于2007-10-19 11:33:29编辑过]

--  作者:f1029303
--  发布时间:10/19/2007 9:28:00 AM

--  http://hi.baidu.com/yangyuenfei/blog/item/60820c0fd5dfa2286059f393.html
http://hi.baidu.com/yangyuenfei/blog/item/60820c0fd5dfa2286059f393.html
--  作者:f1029303
--  发布时间:10/20/2007 9:56:00 PM

--  
查看文章    

HttpWebRequest,HttpWebResponse的用法和用途

1.用途:HettpWebRequest,HettpWebResponse用途和webServers的作用差不多,都是得到一个页面传过来的值。HttpWebRequest

2。用法:----------------get的用法(相对简单)------------------


       System.Net.HttpWebRequest httpWebRequest = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create("hettp://hibaidu.com/yangyuefei?name=yangshuai");//创建一个hettpReq请求对象,包含要传递的值name;

       httpWebRequest.Method="GET";//传递的方法,必须要写,而已Get必须大写。

       System.Net.HttpWebResponse httpWebResponse = (System.Net.HttpWebReponse)httpWebRequest.GetResponse();//创建一个响应对象,并重请求对象中得到响应对象的事例。

       System.IO.Stream stream = new System.IO.Stream();//创建一个流对象(用来读取响应对象的内容)

       stream = httpWebResponse.GetResponseStream();//得到回应过来的流

       System.IO.StreamReader streamReader = new System.IO.StreamReader(stream,System.Text.Encoding.Default);//创建一个流的读取对象,用来输出传过来的内容
   
       string strOut = streamReader.RedToEnd();
       httpWebResponse.Close();//响应关闭,要不会占用网络资源
       Response.Write(strOut);//输出流,要提醒的是,它输出的是 另一个网页的页面上的内容

---HttpWebRequest,httpWebResponse的post用法

       System.Net.HttpWebRequest      httpWebRequest      =      (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create
      ("http://httpWebRequest/httpWebRequest/httpWebRequest.aspx");   

     httpWebRequest.Method      =      "POST";   
     
     httpWebRequest.ContentType      =      "application/x-www-form-urlencoded";     //表头的格式必须要写,否则请求响应的页面得不到要传递的值

     byte[]      SomeBytes=System.Text.Encoding.Default.GetBytes("name=yang&passwod=123");//传递的值
     req.ContentLength      =      SomeBytes.Length;   
     System.IO.Stream      newStream      =      req.GetRequestStream();//把传递的值写到流中   
     newStream.Write(SomeBytes,      0,      SomeBytes.Length);   
     newStream.Close();//必须要关闭 请求
System.Net.HttpWebResponse      httpWebResponse      =      null;  
     httpWebResponse      =      (System.Net.HttpWebResponse)httpWebRequest.GetResponse();   
     System.IO.Stream s=httpWebResponse.GetResponseStream();
     System.IO.StreamReader reader = new System.IO.StreamReader(s,System.Text.Encoding.Default);
     string respHTML = reader.ReadToEnd();

     Response.Write(respHTML);
   
     s.Close();


//////////////////////////////////////////////////////////////////////////////
System.Net.HttpWebResponse      httpWebResponse      =      null;  
     httpWebResponse      =      (System.Net.HttpWebResponse)httpWebRequest.GetResponse();   
     System.IO.Stream s=httpWebResponse.GetResponseStream();
     System.IO.StreamReader reader = new System.IO.StreamReader(s,System.Text.Encoding.Default);
     string respHTML = reader.ReadToEnd();

     Response.Write(respHTML);
   
     s.Close();
這里是response來接收數据放在 client還是server端呢?
如果說是放在server端﹐代碼寫在什么地方?


[此贴子已经被作者于2007-10-21 9:49:13编辑过]

--  作者:f1029303
--  发布时间:10/21/2007 9:58:00 AM

--  
如果Http POST請求是windows form 程序一點問題都沒有.console application 也沒有問題。
如果是web form程序﹐結果是文件沒有創建,debug沒有什么問題.代碼都一樣,不知道為什么?

//start step 1
//這段代碼是客戶端做 HTTP POST 請求,此程序是windows form程序
private void button1_Click(object sender, EventArgs e)
        {             
             FileStream fs = new FileStream(@"E:\Training Doc\lotus address.txt", FileMode.Open);
            byte[] b = new byte[fs.Length];
            fs.Read(b, 0, b.Length);
            fs.Close();
           HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://10.139.8.107/HttpProcessorTest/default.aspx");
            request.Method = "POST";
            request.ContentLength = b.Length;
            request.ContentType = "application/x-www-form-urlencoded";
            Stream s = request.GetRequestStream();
            s.Write(b, 0, b.Length);
            s.Close();  
        }

//end step1

//start step2
//這段代碼是server端做receiver請求,然后將數据保存為C:\123456789.txt
public class HttpHandler : IHttpHandler
    {
        private string ReqStr = null;      
        public void ProcessRequest(HttpContext ctx)
        {
                Stream RcvStream = ctx.Request.InputStream;
                StreamReader ReadStrm = new StreamReader(RcvStream);
                ReqStr = ReadStrm.ReadToEnd();
                FileStream fs = new FileStream(@"C:\123456789.txt", FileMode.Create);
                StreamWriter sw = new StreamWriter(fs);
                sw.Write(ReqStr);
                sw.Close();
                fs.Close();
        }
        public bool IsReusable
        {
            get
            {
                return true;
            }
        }
    }
//end step2

[此贴子已经被作者于2007-10-22 19:43:06编辑过]

W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
93.750ms