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();
프로세스 요청이 올바르게 설정되지 않습니다. 콘텐츠 길이를 가져 오거나 설정하기위한 ContentType을 설정했습니다. – dbugger
코드에 하나씩 오류가 있습니까? ContentLength = FileStream.Length를 설정 중이지만 FileStream.Length-1 바이트 만 업로드합니다. – feroze
죄송합니다. 여기 게시 한 코드를 단순화하려는 실수였습니다. – jkh