2009-04-20 11 views
8

में POST-पैरामीटर के साथ असिंक्रोनस WebRequest। मैं .NET कॉम्पैक्ट फ्रेमवर्क पर एक एसिंक्रोनस HTTP (एस) POST करने की कोशिश कर रहा हूं और मुझे यह काम नहीं लग रहा है।.NET कॉम्पैक्ट फ्रेमवर्क

यहाँ मैं क्या कर रहा है:

private void sendRequest(string url, string method, string postdata) { 
    WebRequest rqst = HttpWebRequest.Create(url); 
    CredentialCache creds = new CredentialCache(); 
    creds.Add(new Uri(url), "Basic", new NetworkCredential(this.Uname, this.Pwd)); 
    rqst.Credentials = creds; 
    rqst.Method = method; 
    if (!String.IsNullOrEmpty(postdata)) { 
     rqst.ContentType = "application/xml"; 
     byte[] byteData = UTF8Encoding.UTF8.GetBytes(postdata); 
     rqst.ContentLength = byteData.Length; 
     using (Stream postStream = rqst.GetRequestStream()) { 
      postStream.Write(byteData, 0, byteData.Length); 
      postStream.Close(); 
     } 
    } 
    ((HttpWebRequest)rqst).KeepAlive = false; 
    rqst.BeginGetResponse(DataLoadedCB, rqst); 
} 

private void DataLoadedCB(IAsyncResult result) { 
    WebRequest rqst = ((WebRequest)(((BCRqst)result.AsyncState).rqst)); 
    WebResponse rsps = rqst.EndGetResponse(result); 

    /* ETC...*/ 
} 

... लेकिन किसी कारण से मैं DataLoadedCB की दूसरी पंक्ति पर एक WebException मिलती है:

"यह अनुरोध प्रमाणीकरण या के लिए डेटा के बफरिंग की आवश्यकता है सफल होने के लिए पुनर्निर्देशन। "

सटीक उसी कोड पूरी तरह से काम करता है, जब मैं एक साधारण HTTP प्राप्त करता हूं, लेकिन जब मैं कुछ पोस्ट पैराम में फेंकता हूं, तो सब कुछ विफल हो जाता है।

कोई विचार?

उत्तर

12

मैं कभी भी बहुत खुश हूं! मुझे अपने प्रश्न का उत्तर मिला !!!

इस छोटे लाइन चाल किया:

((HttpWebRequest)rqst).AllowWriteStreamBuffering = true; 
+1

मुझे लगता है कि आप इस के पास ** ((HttpWebRequest) rqst) जोड़ने के लिए मतलब .KeepAlive झूठी =; ** :) –

संबंधित मुद्दे