C# 正确处理Web请求
我有一个带有.JSON文件的动态页面,我使用我的C#程序每隔x秒访问一次,以确定是否有更改。只要我有网络连接,任何东西都可以完美地工作,如果出于任何原因我丢失了它,那么我的程序就会崩溃,因为前响应是空的。我想知道是否有更好的方法来处理以下代码:C# 正确处理Web请求,c#,json,visual-studio,C#,Json,Visual Studio,我有一个带有.JSON文件的动态页面,我使用我的C#程序每隔x秒访问一次,以确定是否有更改。只要我有网络连接,任何东西都可以完美地工作,如果出于任何原因我丢失了它,那么我的程序就会崩溃,因为前响应是空的。我想知道是否有更好的方法来处理以下代码: void Function(){ while(true){ jList = new System.Web.Script.Serialization.JavaScriptSerializer().Deserialize<jsonList>(G
void Function(){
while(true){
jList = new System.Web.Script.Serialization.JavaScriptSerializer().Deserialize<jsonList>(GET(jsonUrl));
//SOME THINGS I DO with the data above here
Thread.Sleep(5000);
}}
string GET(string url)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
try
{
WebResponse response = request.GetResponse();
using (Stream responseStream = response.GetResponseStream())
{
StreamReader reader = new StreamReader(responseStream, Encoding.UTF8);
return reader.ReadToEnd();
}
}
catch (WebException ex)
{
WebResponse errorResponse = ex.Response;
if (ex.Response != null) {
using (Stream responseStream = errorResponse.GetResponseStream())
{
StreamReader reader = new StreamReader(responseStream, Encoding.GetEncoding("utf-8"));
String errorText = reader.ReadToEnd();
// log errorText
}
}
throw;
}
}
并将其用作
void Function(){
while(true){
if (!getResponse(jsonUrl))
{
return;
}
jList = new System.Web.Script.Serialization.JavaScriptSerializer().Deserialize<jsonList>(GET(jsonUrl));
//SOME THINGS I DO with the data above here
Thread.Sleep(5000);
}}
void函数(){
while(true){
如果(!getResponse(jsonUrl))
{
返回;
}
jList=new System.Web.Script.Serialization.JavaScriptSerializer();
//我用上面的数据做了一些事情
睡眠(5000);
}}
我的C#应用程序稍等片刻,然后正常退出。为什么?
程序“[10476]Kiosk2.vshost.exe”已退出,代码为0(0x0)。好的,这对我来说似乎工作正常
public void Update() //CALLED IT void FUNCTION earlier
{
while (true)
{
while (getResponse(jsonUrl))
{
jList = new System.Web.Script.Serialization.JavaScriptSerializer().Deserialize<jsonList>(GET(jsonUrl));
//I DO SOME STUFF HERE
//INTERESTING STUFF
Thread.Sleep(5000);
}
}
}
ping不能保证其ICMP,它在世界上的优先级较低。其次,即使它进行了ping,也不能保证web响应。。答案是更好地处理您的错误-您显然没有检查您的数据是否存在,或者您的程序不会崩溃。我认为在尝试读取数据之前,它应该检查页面是否可用。在无端点循环的void函数()中的某个位置。我尝试了这个,但仍然没有bool RemoteWebOnline(字符串url){WebRequest request=WebRequest.Create(url);WebResponse响应;try{response=request.GetResponse();Console.WriteLine(“Web响应:+response”);返回true;}catch{return false;}}
public void Update() //CALLED IT void FUNCTION earlier
{
while (true)
{
while (getResponse(jsonUrl))
{
jList = new System.Web.Script.Serialization.JavaScriptSerializer().Deserialize<jsonList>(GET(jsonUrl));
//I DO SOME STUFF HERE
//INTERESTING STUFF
Thread.Sleep(5000);
}
}
}
public bool getResponse(string URL)
{
try
{
WebClient wc = new WebClient();
string HTMLSource = wc.DownloadString(URL);
return true;
}
catch (Exception)
{
return false;
}
}