我不知道。我正在尝试从我为Windows Phone构建的应用上的REST服务中获取XML。为什么在尝试使用HttpWebRequest时收到ProtocolViolationException?
HttpWebResponse response = request.EndGetResponse(ar) as HttpWebResponse;
我有以下设置(忽略坏的URL,这只是一个例子。)
HttpWebRequest request = WebRequest.Create("https://domain.chargify.com/customers.xml") as HttpWebRequest;
NetworkCredential credentials = new NetworkCredential("appkeyhere", "password");
request.Credentials = credentials;
request.Method = "GET";
request.ContentType = "text/xml";
request.BeginGetResponse(new AsyncCallback(SomeCallback), request);
...
private void SomeCallback(IAsyncResult ar) {
HttpWebRequest request = ar.AsyncState as HttpWebRequest;
HttpWebResponse response = request.EndGetResponse(ar) as HttpWebResponse;
StreamReader reader = new StreamReader(response.GetResponseStream());
XElement xmlResult = XElement.Parse(reader.ReadToEnd());
...
}
例外如下::
我总是在下面一行得到一个异常System.Net.ProtocolViolationException was unhandled
Message=ProtocolViolationException
StackTrace:
at System.Net.Browser.ClientHttpWebRequest.PrepareAndSendRequest(String method, Uri requestUri, Stream requestBodyStream, WebHeaderCollection headerCollection, CookieContainer cookieContainer)
at System.Net.Browser.ClientHttpWebRequest.BeginGetResponseImplementation()
at System.Net.Browser.ClientHttpWebRequest.InternalBeginGetResponse(AsyncCallback callback, Object state)
at System.Net.Browser.AsyncHelper.BeginOnUI(BeginMethod beginMethod, AsyncCallback callback, Object state)
at System.Net.Browser.ClientHttpWebRequest.BeginGetResponse(AsyncCallback callback, Object state)
at ChargifyWPA.MainPage.button1_Click(Object sender, RoutedEventArgs e)
at System.Windows.Controls.Primitives.ButtonBase.OnClick()
at System.Windows.Controls.Button.OnClick()
at System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp(MouseButtonEventArgs e)
at System.Windows.Controls.Control.OnMouseLeftButtonUp(Control ctrl, EventArgs e)
at MS.Internal.JoltHelper.FireEvent(IntPtr unmanagedObj, IntPtr unmanagedObjArgs, Int32 argsTypeIndex, String eventName)
任何人有什么想法?它是https,而不是http ..是否导致此问题? 谢谢。
请发布完整的例外,并告诉我们发生异常的地方。另外,在SomeCallback中,您需要将您的IDisposable实例放入使用块中。 HttpWebResponse,StreamReader甚至Stream都需要使用''blocks',否则你会泄漏资源。 – 2010-03-19 20:13:18
添加了我的问题的例外..我修改了使用“使用”块,这很好。问题仍然存在。 – djbyter 2010-03-23 14:16:05
不知道这是否是请求它的正确位置,但是您能否将Windows-Phone-7标记添加到此文章中? – CACuzcatlan 2010-12-07 23:00:34