Uri uri = new Uri("http://www.ip138.com/ip2city.asp");
System.Net.HttpWebRequest req = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(uri);
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
req.Referer = "http://www.ip138.com/ip2city.asp";
req.ContentLength = 0;
req.CookieContainer = new System.Net.CookieContainer();
req.GetRequestStream().Write(new byte[0], 0, 0);
System.Net.HttpWebResponse res = (System.Net.HttpWebResponse)(req.GetResponse());
StreamReader rs = new StreamReader(res.GetResponseStream(), System.Text.Encoding.GetEncoding("gb2312"));
string s = rs.ReadToEnd();
rs.Close();
req.Abort();
res.Close();
System.Text.RegularExpressions.Match m = System.Text.RegularExpressions.Regex.Match(s, @"\[(?<IP>[0-9\.]*)\]");
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using System.IO; namespace GetIp { class Program { static void Main(string[] args) { Console.WriteLine( GetIPAddress()); Console.ReadKey(); } private static string GetIPAddress() { Uri uri = new Uri("http://city.ip138.com/ip2city.asp"); System.Net.HttpWebRequest req = (System.Net.HttpWebRequest)HttpWebRequest.Create(uri); req.Method = "get"; using (Stream s = req.GetResponse().GetResponseStream()) { using (StreamReader reader = new StreamReader(s)) { string str = reader.ReadToEnd(); System.Text.RegularExpressions.Match m = System.Text.RegularExpressions.Regex.Match(str, @"\[(?<IP>[0-9\.]*)\]"); return m.Value; } } } } }
不要发post请求。取数据发get请求就可以了。另外取ip的网址不是 http://www.ip138.com/ip2city.asp 而是
http://city.ip138.com/ip2city.asp
是否是需要用户名验证呀
403应该是没有权限
使用前:
request.UseDefaultCredentials = true;
HTTP 错误403|403错误
错误代码:403.1 403.1错误是由于 "执行 "访问被禁止而造成的,若试图从目录中执行 CGI、ISAPI 或其他可执行程序,但该目录不允许执行程序时便会出现此种错误。
错误代码:403.2 403.2错误是由于 "读取 "访问被禁止而造成的。导致此错误是由于没有可用的默认网页并且没有对目录启用目录浏览,或者要显示的 HTML 网页所驻留的目录仅标记为 "可执行 "或 "脚本 "权限。
错误代码:403.3 403.3错误是由于 "写入 "访问被禁止而造成的,当试图将文件上载到目录或在目录中修改文件,但该目录不允许 "写 "访问时就会出现此种错误。
错误代码:403.4 403.4错误是由于要求SSL而造成的,您必须在要查看的网页的地址中使用 "https "。
错误代码:403.5 403.5错误是由于要求使用 128 位加密算法的 Web 浏览器而造成的,如果您的浏览器不支持128位加密算法就会出现这个错误,您可以连接微软网站进行浏览器升级。
错误代码:403.6 403.6错误是由于IP 地址被拒绝而造成的。如果服务器中有不能访问该站点的 IP 地址列表,并且您使用的 IP 地址在该列表中时您就会返回这条错误信息。
错误代码:403.7 403.7错误是因为要求客户证书,当需要访问的资源要求浏览器拥有服务器能够识别的安全套接字层 (SSL) 客户证书时会返回此种错误。
错误代码:403.8 403.8错误是由于禁止站点访问而造成的,若服务器中有不能访问该站点的 DNS 名称列表,而您使用的 DNS 名称在列表中时就会返回此种信息。请注意区别403.6与403.8错误。
错误代码:403.9 403.9错误是由于连接的用户过多而造成的,由于Web 服务器很忙,因通讯量过多而无法处理请求时便会返回这条错误。
错误代码:403.10 403.10错误是由于无效配置而导致的错误,当您试图从目录中执行 CGI、ISAPI 或其他可执行程序,但该目录不允许执行程序时便会返回这条错误。
错误代码:403.11 403.11错误是由于密码更改而导致无权查看页面。
错误代码:403.12 403.12错误是由于映射器拒绝访问而造成的。若要查看的网页要求使用有效的客户证书,而您的客户证书映射没有权限访问该 Web 站点时就会返回映射器拒绝访问的错误。
错误代码:403.13 403.13错误是由于需要查看的网页要求使用有效的客户证书而使用的客户证书已经被吊销,或者无法确定证书是否已吊销造成的。
错误代码:403.15 403.15错误是由于客户访问许可过多而造成的,当服务器超出其客户访问许可限制时会返回此条错误。
错误代码:403.16 403.16错误是由于客户证书不可信或者无效而造成的。
错误代码:403.17 403.17错误是由于客户证书已经到期或者尚未生效而造成的。
可能是ip138服务器屏蔽了你这台机器的访问,建议换一台电脑运行试试
可能吧,在新机器上试过了,而且我的外网IP地址经常变动的。
其实没必要用ip138的 可以用纯真IP库 qqwry.dat
在博客园搜搜就知道咋用了
能不能详细点,客户获取外网地址,.net平台,C#语言。
ip138那个,你直接用GET请求访问过去就能获取到。
还有现在这个网站对访问好像做了限制,我调用它的查手机号段老是报错误信息。
另外据我所知,qqwry.dat是一个IP地址和真实地址库,并不具备获取本机真实IP的功能。
使用GET获得的内容是空的。得不到ip地址!