我的代码的这一部分会引发异常。我怎么才能解决呢?
XmlDocument locrequest = new XmlDocument();
locrequest.Load(String.Format("http://api.geoips.com/ip/{0}/key/.myapikey./output/xml/", player.IP));
XmlNode root = locrequest.DocumentElement;
string from = root.SelectSingleNode("country_name").InnerText.ToLower();System.Net.WebException: Error: ConnectFailure (可用缓冲区空间不足)
全误差http://pastebin.com/8u6MpeWS
编辑:如果我添加locrequest.XmlResolver = null;,它会抛出另一个异常:
System.NullReferenceException:未设置为对象实例的对象引用
这有什么问题吗?
发布于 2012-09-20 18:27:35
您可以使用WebRequest类来加载文件
链接:http://msdn.microsoft.com/library/system.net.webrequest.aspx
WebRequest request = WebRequest.Create ("...");
// If required by the server, set the credentials.
request.Credentials = CredentialCache.DefaultCredentials;
// Get the response.
WebResponse response = request.GetResponse ();
// Display the status.
Console.WriteLine (((HttpWebResponse)response).StatusDescription);
// Get the stream containing content returned by the server.
Stream dataStream = response.GetResponseStream ();
..... 发布于 2012-09-20 19:35:01
建立在阿吉拉斯的岗位上..。
返回的流是不可查找的流,因此需要使用类似于以下内容的函数读取到它的末尾:
static byte[] readFullStream(Stream st)
{
Array Buffer = (byte[])Array.CreateInstance(typeof(byte), 32768);
System.Int32 Size;
bool eof = false;
MemoryStream ms = new MemoryStream();
while (!eof)
{
Size = st.Read((byte[])Buffer, 0, Buffer.Length);
if (Size > 0)
{
ms.Write((byte[])Buffer, 0, Size);
}
else
{
eof = true;
}
}
return ms.ToArray();
}然后,一旦从上面的函数获得字节数组,就用它加载您的XmlDocument。
记住,我们从阿吉拉斯密码的底部开始.
byte[] buffer = readFullStream(dataStream);
XmlDocument locrequest = new XmlDocument();
locrequest.LoadXML(new UFT8Encoding().GetString(buffer));希望这能有所帮助。
发布于 2012-09-21 15:05:00
因戈
在你最初发布的关于这个问题的文章here的基础上,也许这会让你的文章更清晰一些。假设有一些关于连接故障的基本内容,而不仅仅是由于任何原因,服务器不接受连接,那么您可以使用XmlDocument类的默认Load()机制,就像Aghilas指出的那样,使用一个WebRequest对象。
WebRequest对象与您指定的URL联系,然后使用请求/响应模型创建响应对象。从该响应对象,您可以通过GetResponseStream()方法获得响应的数据流;这是Aghilas演示的。然后,您可以获取该流,并将其放在示例中的变量dataStream中,并将其传递给期望流的XmlDocument.Load()方法的重载:
//assuming prior code from Aghilas is here as appropriate...
Stream dataStream = response.GetResponseStream();
XmlDocument locRequest = new XmlDocument();
locRequest.Load(dataStream);希望这能有所帮助。
https://stackoverflow.com/questions/12518612
复制相似问题