httpwebrequestを使用してxmlドキュメントを取得していますが、そのコードは次のとおりです。私はそれが正常に動作しますWindows PhoneでHttpWebRequestを使ってxmlを取得する
HttpGetMethod http = new HttpGetMethod();
http.Request("http://sample.com/xml.php");
を呼び出すと、私は、XML文書を解析する
XDocument document = XDocument.Parse(xml);
XElement element = document.Element("statuses");
IEnumerable<XElement> statusesElements = element.Elements("status");
foreach (var elx in statusesElements)
{}
を使用しています。しかし、時には例外が発生することがあります。次に、返されたxml文字列に "e48"が含まれていることがわかりました(返されたxml文字列を見つけるためにFiddlerを使用しています)。しかし、私はその理由を理解することができません、それはとても奇妙です、 "e48"は何ですか?誰も助けてくれますか?
ありがとうございました。
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());
});
}
}
}
デバッグ出力は次のようになります。ここでは
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
はフィドルIH生の応答です:
など、この特定のシナリオの使用正規表現でIMO
さらに奇妙だ事は、あなたが印刷例外トレースは、無効な文字が位置14で、私は例外を期待しているだろう、ライン897上であることを示しているということですe48文字が問題であった場合、無効な文字がデータの先頭にあることを示すメッセージが表示されます。 –
Fiddlerの生のレスポンスに表示される場合、ファイルを生成するサーバーコードにバグがあります。あなたはそれをデバッグする必要があります。 –
サーバーにアクセスできない場合は、条件付きでサーバーを削除するなど、サーバーの問題のように見えます。 – ameer