문제

도를 사용 된 플러그 가능한 나머지를 사용하 같은 서비스를 원격 서버에서 실행 자신,내 코드에 매달려 있었습니다.그때 나는 그것을 시도를 콘솔 프로그램으로 확인과는 아무 상관이 프로그램 자체만!

        string credentialsJson = @"{""username"":""test"",
                                      ""password"":""test"" 
                                   }";

        int tmp = ServicePointManager.DefaultConnectionLimit;
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(@"https://qrua.com/qr/service" + @"/auth/login");
        request.Method = "POST";
        request.KeepAlive = true;
        request.Timeout = 50000 ;
        request.CookieContainer = new CookieContainer();
        request.ContentType = "application/json";
        try
        {
            StreamWriter writer = new StreamWriter(request.GetRequestStream());
            writer.Write(credentialsJson);
        }
        catch (Exception e)
        {
            Console.WriteLine("EXCEPTION:" + e.Message);
        }

        //WebResponse response = request.GetResponse();
        try
        {
            using (WebResponse response = (HttpWebResponse)request.GetResponse())
            {
                Console.WriteLine("request:\n" + request.ToString() + "\nresponse:\n" + response.ContentLength);
                response.Close();
            }
        }
        catch (Exception e)
        {
            Console.WriteLine("EXCEPTION: in sending http request:" + " \nError message:" + e.Message);
        }

도 몇 가지 서로 다른 포럼이지만 그것은 도움이됩니다.도 간단한 콘솔 응용 프로그램으로 위의 코드를 콘솔을 중단하고 무기한!어떤 도움이 될 것입니다.

감사

도움이 되었습니까?

해결책

당신은 결코 폐쇄 StreamWriter...그래서 나는 그것을 의심하지 않고 했습니다.틀림없이 기대에 오류가에서 대신 서버의 중단,하지만 그럴 가치가 있습니다.

Btw,당신은 필요하지 않을 닫고 응답 폐기습니다.그 using 문 충분하다.

다른 팁

원격 사이트가 응답하지 않았기 때문에 사용자에게 작업을 완료 할 수 없기 때문에 원격 서버가 Timeout를 정의하고 사용자에게 작업을 완료 할 수 없음을 알리기 위해 사용한 것처럼 원격 서버가 응답하지 않으면 할 수있는 것이별로 없습니다.P>

var request = (HttpWebRequest)WebRequest.Create("https://qrua.com/qr/service/auth/login");
request.Timeout = 5000;
// If the server doesn't respond within 5 seconds you might catch the timeout exception
using (var response = request.GetResponse())
{

}
.

UI를 정지하지 않으려면 begingetresponse

request.contentLength를 지정하십시오.

수행하기 전에 :

        StreamWriter writer = new StreamWriter(request.GetRequestStream());
        writer.Write(credentialsJson);
.

다음과 같이 시도하십시오 :

using (MemoryStream stream = new MemoryStream())
{
    using (var writer = StreamWriter writer = new StreamWriter(stream))
    {
        writer.Write(credentialsJson);
        writer.Close();
    }
    request.ContentLength = stream.Length;
}
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top