我是C#新手。我主要是C编码。我有一个问题,我希望有人可以给我一些见解和/或代码片段。
问题:我们使用C#编写的GUI软件与LRU(线路可替换单元)通信,以便加载和检索数据。我有一个LRU服务器,当前使用HTTP POST命令将数据传输到笔记本电脑服务器。笔记本电脑当前接受LRU POST数据并显示在网页中。笔记本电脑还使用POST和GET命令到LRU,以便设置和检索LRU值。我想使用配置了我们软件的不同笔记本电脑来执行相同的任务。我们的笔记本电脑在GUI窗口中显示数据,不使用Web浏览器界面。
您是否有C#代码示例来说明我们的笔记本电脑如何从LRU接收以下定期HTTP POST数据命令:即POST / mipg3 / servlet / xmlToMySql HTTP / 1.0?
您是否有C#代码示例来说明我们的笔记本电脑服务器如何将以下HTTP GET数据命令发送到LRU:GET /setFreq.shtml HTTP / 1.1并接收POSTed LRU响应:即POST / mipg3 / servlet / xmlToMySql HTTP / 1.0?
下面是一个来自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