2011-08-09 6 views
1

POST를 통해 REST 웹 서비스에 데이터를 보내고 추가 HttpWebRequest를 후속 처리하여 처리 후 응답을 다운로드하도록 HttpWebRequest를 만들려고합니다. 다음과 같이WebRequest GetResponse 응답 없음, 작업 시간 초과

POST는 웹 서비스까지 바이너리 데이터를 전송한다 :

HttpWebRequest uploadRequest = (HttpWebRequest)WebRequest.Create(baseAddress + uploadURIRequest); 
uploadRequest.Timeout = Timeout.Infinite; 
uploadRequest.ReadWriteTimeout = Timeout.Infinite; 
uploadRequest.Method = "POST"; 
uploadRequest.ContentLength = fileInfo.Length; 
uploadRequest.ContentType = "application/octet-stream"; 

using (Stream writeStream = uploadRequest.GetRequestStream()) 
{ 
    using (FileStream readStream = new FileStream(fileStreamFileName, FileMode.Open, FileAccess.Read)) 
    { 
     byte[] data= new byte[readStream.Length]; 
     int bytesRead = readStream.Read(data, 0, (int)readStream.Length); 
     writeStream.Write(data, 0, bytesRead); 

     readStream.Close(); 
    } 
    writeStream.Close(); 
} 

가 그런 다음 요청이 서버에서 데이터를 처리하는 웹 서비스를 이야기하고 상태 응답을 반환하게된다.

HttpWebRequest processRequest = (HttpWebRequest)WebRequest.Create(baseAddress + processURIRequest); 
processRequest.Timeout = 10000; 
processRequest.ReadWriteTimeout = 10000; 
processRequest.ContentType = "GET"; 

HttpWebResponse processRequestResponse = (HttpWebResponse)processRequest.GetResponse(); 

using (Stream processRequestResponseStream = processRequestResponse.GetResponseStream()) 
{ 
    //Do stuff... 

} 

콘텐츠 유형을 변경하면 XML 데이터에도 적용됩니다. 그러나 바이너리 데이터로 위와 같이 유지하면 타임 아웃이 10 초 이상으로 증가하더라도 작업이 항상 타임 아웃됩니다. 그것이하는 처리는 돌아 오기까지 오랜 시간이 걸리지 않아야합니다. 내가 디버깅 할 때

, 그것은 항상하는 GetResponse와 라인에 달려 :

HttpWebResponse processRequestResponse = (HttpWebResponse)processRequest.GetResponse(); 
+0

프로세스 요청이 올바르게 설정되지 않습니다. 콘텐츠 길이를 가져 오거나 설정하기위한 ContentType을 설정했습니다. – dbugger

+0

코드에 하나씩 오류가 있습니까? ContentLength = FileStream.Length를 설정 중이지만 FileStream.Length-1 바이트 만 업로드합니다. – feroze

+0

죄송합니다. 여기 게시 한 코드를 단순화하려는 실수였습니다. – jkh

답변

1

이 문제를 해결 스트림에 기입 한 후

HttpWebResponse uploadRequestResponse = (HttpWebResponse)uploadRequest.GetResponse(); 

추가.

+0

글을 쓰고 난 후에? – JNF