No tengo idea. Estoy tratando de obtener XML de un servicio REST en una aplicación que estoy creando para Windows Phone. Siempre tengo una excepción en la siguiente línea:¿Por qué recibo ProtocolViolationException cuando trato de usar HttpWebRequest?
HttpWebResponse response = request.EndGetResponse(ar) as HttpWebResponse;
He la siguiente configuración (ignorar el mal url, es sólo un ejemplo ..)
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());
...
}
La excepción es la siguiente:
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)
¿Alguien tiene alguna idea? Es https, no http ... ¿eso está causando el problema? Gracias.
favor publique la excepción completa y muéstrenos dónde se produce la excepción. Además, en SomeCallback, debe colocar sus instancias IDisposable en el uso de bloques. HttpWebResponse, StreamReader e incluso Stream deben estar en bloques 'using', o se perderán recursos. –
Agregué la excepción a mi pregunta ... y la modifiqué para usar bloques "usando", lo cual está bien. El problema todavía ocurre. – djbyter
No estoy seguro si este es el lugar correcto para solicitarlo, pero ¿podría agregar la etiqueta de Windows-Phone-7 a esta publicación? – CACuzcatlan