I’m using httpwebrequest to fetch some xml document, the code is as followed. When I call
HttpGetMethod http = new HttpGetMethod();
http.Request("http://sample.com/xml.php");
It works fine, then I use the
XDocument document = XDocument.Parse(xml);
XElement element = document.Element("statuses");
IEnumerable<XElement> statusesElements = element.Elements("status");
foreach (var elx in statusesElements)
{}
to parse the xml document. But sometimes there cause a exception, then I traced to find that the returned xml string contains the “e48″(I’m using the Fiddler to find the returned xml string), as shown in the pic. But I can’t figure out the reason, it’s so strange, what’s the “e48”? Could anybody help?
Thanks.

public class HttpGetMethod
{
public WebCallBack CallBack;
public void Request(string url)
{
var request = (HttpWebRequest)HttpWebRequest.Create(url);
IAsyncResult result = null;
result = (IAsyncResult)request.BeginGetResponse(ResponseCallback, request);
}
private void ResponseCallback(IAsyncResult result)
{
try
{
var request = (HttpWebRequest)result.AsyncState;
var response = request.EndGetResponse(result);
using (var stream = response.GetResponseStream())
{
using (var reader = new StreamReader(stream))
{
if (CallBack != null)
{
var str = reader.ReadToEnd();
CallBack(str);
}
}
}
}
catch (Exception ex)
{
Deployment.Current.Dispatcher.BeginInvoke(delegate
{
CallBack(ex.ToString());
});
}
}
}
The debug output is:
A first chance exception of type 'System.Xml.XmlException' occurred in System.Xml.dll
A first chance exception of type 'System.ArgumentOutOfRangeException' occurred in mscorlib.dll
System.Xml.XmlException: '', hexadecimal value 0x0C, is an invalid character. Line 897, position 14.
at System.Xml.XmlTextReaderImpl.Throw(Exception e)
at System.Xml.XmlTextReaderImpl.Throw(Int32 res, String resString, String[] args)
at System.Xml.XmlTextReaderImpl.Throw(Int32 pos, Int32 res, String resString, String[] args)
at System.Xml.XmlTextReaderImpl.ThrowInvalidChar(Char[] data, Int32 length, Int32 invCharPos)
at System.Xml.XmlTextReaderImpl.ParseCDataOrComment(XmlNodeType type, Int32& outStartPos, Int32& outEndPos)
at System.Xml.XmlTextReaderImpl.ParseCDataOrComment(XmlNodeType type)
at System.Xml.XmlTextReaderImpl.ParseCData()
at System.Xml.XmlTextReaderImpl.Parse
Here is the Raw response ih Fiddle:

IMO in this specific scenario use regex such as “^[^<]*” in
to remove the preceeding garbage chars