연결을 생성 한 후 ID를 보내고 응답을 저장 한 다음, 다시 보내고 (일반적으로 ~ 60-100 ID) 보내야합니다. 현재 나는 이렇게했습니다 :WebRequest 다중 쓰기 및 읽기
public void EThread()
{
HttpWebRequest HWRequest = (HttpWebRequest)WebRequest.Create(_AjaxURL);
HWRequest.Method = "POST";
HWRequest.ContentType = "text/xml; encoding='utf-8'";
string StrID;
while(!_RequiredIDs.IsEmpty)
if (_RequiredIDs.TryDequeue(out StrID))
Extract(StrID, ref HWRequest);
}
public void Extract(string ID, ref HttpWebRequest HWRequest)
{
string data = "strID=" + ID;
byte[] Bytes = Encoding.ASCII.GetBytes(data);
using (Stream SWriter = HWRequest.GetRequestStream())
{
SWriter.Write(Bytes, 0, Bytes.Length);
SWriter.Close();
}
HttpWebResponse resp = (HttpWebResponse)HWRequest.GetResponse();
using (Stream s = resp.GetResponseStream())
using (StreamReader sr = new StreamReader(s))
_RespnseCollection.Enqueue(sr.ReadToEnd());
}
그러나이 오류 : System.Net.WebException: 'The request was aborted: The connection was closed unexpectedly.
이 있습니다. Extract
메서드 안에 HttpWebRequest를 넣으면 작동하지만 오래 작동합니다. 이것은 1 개의 스레드에서 검사되었습니다. 코드가 잘못되었거나 서버가이를 지원하지 않습니다.
그것이 works' 추출 방법 안에'내가 넣으면 HttpWebRequest를하여 무엇을 의미합니까. 메소드를 호출 할 때마다 새로운 HttpWebRequest 객체를 '다시 생성'한다는 것을 의미합니까? 현재 사용중인 코드에서 처음 사용 후 요청 스트림이 닫히면 후속 호출에 오류가 발생합니다. –
예, 매번 '다시 작성'하지만 실행하고 싶지 않습니다. 나는 또한'SWriter.Close()'를 제거한다. 같은 오류. 'WebClient'와 함께 사용 된 제시된 접근법 - 모든 것이 좋지만,이 목적을 위해서'WebClient'는 충분하지 않습니다. –
한 번에 모든 ID를 보낼 수 있습니까? –