向远程服务器发送HTTP GET命令和接收POST命令

时间:2013-11-04 19:52:39

标签: c# http

我是C#新手。我主要是C编码。我有一个问题,我希望有人可以给我一些见解和/或代码片段。

问题:我们使用C#编写的GUI软件与LRU(线路可替换单元)通信,以便加载和检索数据。我有一个LRU服务器,当前使用HTTP POST命令将数据传输到笔记本电脑服务器。笔记本电脑当前接受LRU POST数据并显示在网页中。笔记本电脑还使用POST和GET命令到LRU,以便设置和检索LRU值。我想使用配置了我们软件的不同笔记本电脑来执行相同的任务。我们的笔记本电脑在GUI窗口中显示数据,不使用Web浏览器界面。

  1. 您是否有C#代码示例来说明我们的笔记本电脑如何从LRU接收以下定期HTTP POST数据命令:即POST / mipg3 / servlet / xmlToMySql HTTP / 1.0?

  2. 您是否有C#代码示例来说明我们的笔记本电脑服务器如何将以下HTTP GET数据命令发送到LRU:GET /setFreq.shtml HTTP / 1.1并接收POSTed LRU响应:即POST / mipg3 / servlet / xmlToMySql HTTP / 1.0?

  3. 下面是一个来自Wireshark网络分析的片段,分析了LRU和初始笔记本电脑之间的示例通信(使用带有LRU的Web界面)。

    192.168.211.1          192.168.211.143     HTTP     POST /mipg3/servlet/XmlToMySql Http/1.0
    
    192.168.211.143      192.168.211.1         HTTP     HTTP/1.0  200 OK
    
    192.168.211.1        192.168.211.143       HTTP     POST /mipg3/servlet/XmlToMySql Http/1.0
    
    192.168.211.143      192.168.211.1         HTTP     HTTP/1.0  200 OK
    
    192.168.211.143      192.168.211.1         HTTP     GET /setFreq.shtml  HTTP/1.1
    
    192.168.211.1          192.168.211.143     HTTP     POST /mipg3/servlet/XmlToMySql  HTTP/1.0
    

    我不确定带有GetResponseStream()的WebResponse类是否应该用于读取这些传入的LRU POST。我也不确定带有GetRequestStream()的WebRequest类是否应该用于获取LRU POST。

    非常感谢您提供的任何帮助,

    -Kent

    P.S。

    以下是可用于POST到LRU服务器并接收响应的代码。我不确定如何实现接收传入的POST并提交GET。

    // Test code:   HTTP POST w/return response string
    
    using System.Net;
    ...
    string HttpPost (string uri, string parameters)
    { 
       // parameters: name1=value1&name2=value2 
       WebRequest webRequest = WebRequest.Create (uri);
       //string ProxyString = 
       //   System.Configuration.ConfigurationManager.AppSettings
       //   [GetConfigKey("proxy")];
       //webRequest.Proxy = new WebProxy (ProxyString, true);
       //Commenting out above required change to App.Config
       webRequest.ContentType = "application/x-www-form-urlencoded";
       webRequest.Method = "POST";
       byte[] bytes = Encoding.ASCII.GetBytes (parameters);
       Stream os = null;
       try
       { // send the Post
          webRequest.ContentLength = bytes.Length;   //Count bytes to send
          os = webRequest.GetRequestStream();
          os.Write (bytes, 0, bytes.Length);         //Send it
       }
       catch (WebException ex)
       {
          MessageBox.Show ( ex.Message, "HttpPost: Request error", 
             MessageBoxButtons.OK, MessageBoxIcon.Error );
       }
       finally
       {
          if (os != null)
          {
             os.Close();
          }
       }
    
       try
       { // get the response
          WebResponse webResponse = webRequest.GetResponse();
          if (webResponse == null) 
             { return null; }
          StreamReader sr = new StreamReader (webResponse.GetResponseStream());
          return sr.ReadToEnd ().Trim ();
       }
       catch (WebException ex)
       {
          MessageBox.Show ( ex.Message, "HttpPost: Response error", 
             MessageBoxButtons.OK, MessageBoxIcon.Error );
       }
       return null;
    } // end HttpPost 
    

0 个答案:

没有答案