Reputation: 439
I am using this code to receive data from Server. But I don't know how to set timeout for it. I receive a string from PostInput Model: ContentType, Json, WebRequest.
And this is my code:
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;
}
}
Upvotes: 0
Views: 2506
Reputation: 439
tnks friends
i found new way, i ping the ip and if it available Then calling StreamWriter
this Is my Reaserch Result:
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;
}
Upvotes: 1
Reputation: 1925
you can try an consider using WebClinet
like so
using (WebClient client = new WebClient())
{
using (Stream stream = client.OpenWrite(Input.WebRequest.RequestUri))
using (StreamWriter reader = new StreamWriter(stream))
{
stream.WriteTimeout = 200;
}
}
Upvotes: 2
Reputation: 46249
You might use HttpWebRequest
class's Timeout
property.
Simple code like:
httpWebRequest.ContentType = Input.ContentType;
httpWebRequest.Method = "POST";
httpWebRequest.Timeout= 10000; // 10 seconds
Upvotes: 1