Ho un problema strano accedendo al seguente url:HttpWebRequest fallisce l'accesso ai http://xn--fanbys-exa.org/episodes.m4a.rss
Qui è il codice:
void WebRequestButton_Click(object sender, RoutedEventArgs e)
{
string url = "http://xn--fanbys-exa.org/episodes.m4a.rss";
if (Uri.IsWellFormedUriString(url, UriKind.Absolute))
{
HttpWebRequest webRequest = (HttpWebRequest)HttpWebRequest.Create(url);
if (webRequest != null)
{
webRequest.BeginGetResponse(new AsyncCallback(ReadWebRequestCallback), webRequest);
}
}
}
private void ReadWebRequestCallback(IAsyncResult callbackResult)
{
HttpWebRequest request = (HttpWebRequest)callbackResult.AsyncState;
HttpWebResponse response = null;
try
{
response = (HttpWebResponse)request.EndGetResponse(callbackResult);
}
catch (Exception e)
{
System.Diagnostics.Debug.WriteLine(e);
}
if (response != null)
{
using (StreamReader httpwebStreamReader = new StreamReader(response.GetResponseStream()))
{
string results = httpwebStreamReader.ReadToEnd();
System.Diagnostics.Debug.WriteLine(results);
}
response.Close();
}
}
Leggendo la risposta con request.EndGetResponse() genera questa eccezione:
A first chance exception of type 'System.ArgumentException' occurred in System.Windows.dll
System.ArgumentException ---> System.ArgumentException: The parameter is incorrect.
at MS.Internal.XcpImports.CheckHResult(UInt32 hr)
at MS.Internal.XcpImports.WebRequest_Send(InternalWebRequest request)
at MS.Internal.InternalWebRequest.Send()
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.ClientHttpWebRequest.BeginGetResponse(Async'UI Task' (Managed): Loaded 'System.Runtime.Serialization.dll'
Per quanto posso dire l'url
è wellformed.
Tutti i browser che ho provato possono gestirlo.
I test con Fiddler mostrano che nessuna richiesta HTTP viene inviata dall'emulatore di Windows Phone.
Se hanno provato diversi URL (con un'istanza Fiddler attivo):
string url = "http://xn--fanbys-exa.org/episodes.m4a.rss";
// not ok --> System.ArgumentException: The parameter is incorrect.
string url = "http://xn--fanbys-exa.org";
// not ok --> System.ArgumentException: The parameter is incorrect.
string url = Uri.EscapeUriString("http://xn--fanbys-exa.org/episodes.m4a.rss");
// not ok --> System.ArgumentException: The parameter is incorrect.
string url = "http://stackoverflow.com";
// ok, HTTP request is sent and response is received
string url = "http://stack--overflow.com";
// ok, HTTP request is sent and response is received
string url = "http://xn--stackoverflow.com";
// ok, HTTP request is sent and response 502 is received
// --> System.Net.WebException: The remote server returned an error: NotFound.
Il problema può essere riprodotto con l'emulatore e sul dispositivo.
La mia ipotesi è che questo potrebbe essere correlato al DNS.
Non ho alcun controllo sul sito web di riferimento e sulla sua voce DNS.
Qualche idea?
deciso di provarlo ed è in effetti qualcosa di strano. Il codice funziona come un incantesimo usando qualsiasi URL fornito ad eccezione di quelli nel dominio fanbóys.org. –