Ben, gelen web isteği iletir ve başka bir web sayfasına yönlendirir bir proxy eylem yöntemi uygulayan birkaç başlıkları ekliyorum. Eylem yöntemi GET istekleri için dosya çalışır, ancak hala gelen POST isteğini iletmekle uğraşıyorum. Kopyalama HTTP isteği inputStream
sorun
düzgün giden HTTP isteği akışına istek gövdesini yazma bilen kalmamasıdır. İşte Ben şimdiye kadar ne var kısaltılmış versiyonu:ProtocolViolationException: You must write ContentLength bytes to the request stream before calling [Begin]GetResponse.
I: Ben giden http istek üzerine getResponse dediğimiz gibi kısa sürede
//the incoming request stream
var requestStream=HttpContext.Current.Request.InputStream;
//the outgoing web request
var webRequest = (HttpWebRequest)WebRequest.Create(url);
...
//copy incoming request body to outgoing request
if (requestStream != null && requestStream.Length>0)
{
long length = requestStream.Length;
webRequest.ContentLength = length;
requestStream.CopyTo(webRequest.GetRequestStream())
}
//THE NEXT LINE THROWS A ProtocolViolationException
using (HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse())
{
...
}
, ben şu istisna olsun Bu neden olduğunu anlamıyorum, requestStream.CopyTo doğru miktarda bayt yazma dikkat etmeliydi.
Herhangi bir öneri büyük takdir.
sayesinde
Adrian
ilgili soru - http://stackoverflow.com/questions/226784/how-to-create-a-simple-proxy-in-c –
@James Manning: Bağlantınız için teşekkürler, ama geçmişten geçmişim. Proxy'm her türlü GET isteği için iyi çalışıyor. Bu bana hala problemler veren POST talep gövdesi. –
WebRequest.GetResponse() öğesini çağırmadan önce webRequest.GetRequestStream() tarafından döndürülen akışta Stream.Flush() öğesini çağırmayı denediniz mi? –