如何为 StreamWriter 设置超时?
How to set TimeOut For StreamWriter?
我正在使用此代码从服务器接收数据。但我不知道如何为它设置超时。我从 PostInput 模型收到一个字符串:ContentType, Json, WebRequest.
这是我的代码:
public string PostMethod(PostInput Input)
{
try
{
var httpWebRequest = (HttpWebRequest)WebRequest.Create(Input.WebRequest);
httpWebRequest.ContentType = Input.ContentType;
httpWebRequest.Method = "POST";
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
streamWriter.Write(Input.Json);
streamWriter.Flush();
streamWriter.Close();
}
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
string result;
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
result = streamReader.ReadToEnd();
}
return result;
}
catch (Exception ex)
{
return string.Empty;
}
}
您可以使用 HttpWebRequest
class 的 Timeout
属性。
像这样的简单代码:
httpWebRequest.ContentType = Input.ContentType;
httpWebRequest.Method = "POST";
httpWebRequest.Timeout= 10000; // 10 seconds
谢谢朋友们
我找到了新的方法,
我 ping ip,如果它可用然后调用 StreamWriter
这是我的研究结果:
public string PostMethod(PostInput Input)
{
try
{
var httpWebRequest = (HttpWebRequest)WebRequest.Create(Input.WebRequest);
httpWebRequest.ContentType = Input.ContentType;
httpWebRequest.Method = "POST";
PingReply Objping = new Ping().Send(IPAddress.Parse(Input.Address), 1000);
string result;
if (Objping.Status == IPStatus.Success)
{
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
streamWriter.Write(Input.Json);
streamWriter.Flush();
streamWriter.Close();
}
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
result = streamReader.ReadToEnd();
}
return result;
}
return null;
}
你可以像这样尝试使用 WebClinet
using (WebClient client = new WebClient())
{
using (Stream stream = client.OpenWrite(Input.WebRequest.RequestUri))
using (StreamWriter reader = new StreamWriter(stream))
{
stream.WriteTimeout = 200;
}
}
我正在使用此代码从服务器接收数据。但我不知道如何为它设置超时。我从 PostInput 模型收到一个字符串:ContentType, Json, WebRequest.
这是我的代码:
public string PostMethod(PostInput Input)
{
try
{
var httpWebRequest = (HttpWebRequest)WebRequest.Create(Input.WebRequest);
httpWebRequest.ContentType = Input.ContentType;
httpWebRequest.Method = "POST";
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
streamWriter.Write(Input.Json);
streamWriter.Flush();
streamWriter.Close();
}
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
string result;
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
result = streamReader.ReadToEnd();
}
return result;
}
catch (Exception ex)
{
return string.Empty;
}
}
您可以使用 HttpWebRequest
class 的 Timeout
属性。
像这样的简单代码:
httpWebRequest.ContentType = Input.ContentType;
httpWebRequest.Method = "POST";
httpWebRequest.Timeout= 10000; // 10 seconds
谢谢朋友们
我找到了新的方法, 我 ping ip,如果它可用然后调用 StreamWriter
这是我的研究结果:
public string PostMethod(PostInput Input)
{
try
{
var httpWebRequest = (HttpWebRequest)WebRequest.Create(Input.WebRequest);
httpWebRequest.ContentType = Input.ContentType;
httpWebRequest.Method = "POST";
PingReply Objping = new Ping().Send(IPAddress.Parse(Input.Address), 1000);
string result;
if (Objping.Status == IPStatus.Success)
{
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
streamWriter.Write(Input.Json);
streamWriter.Flush();
streamWriter.Close();
}
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
result = streamReader.ReadToEnd();
}
return result;
}
return null;
}
你可以像这样尝试使用 WebClinet
using (WebClient client = new WebClient())
{
using (Stream stream = client.OpenWrite(Input.WebRequest.RequestUri))
using (StreamWriter reader = new StreamWriter(stream))
{
stream.WriteTimeout = 200;
}
}