我正在开发一些用于测试的API,当我进行webrequest时,尤其是当我检索webresponse时,我遇到了问题。 我使用这段代码:
string request = HttpPost(“http://iunlocker.net/check_imei.php”,“ime_i = 013270000134001”);
public static string HttpPost(string URI, string Parameters)
{
try
{
System.Net.WebRequest req = System.Net.WebRequest.Create(URI);
req.ContentType = "application/x-www-form-urlencoded";
req.Method = "POST";
byte[] bytes = System.Text.Encoding.ASCII.GetBytes(Parameters);
req.ContentLength = bytes.Length;
System.IO.Stream os = req.GetRequestStream();
os.Write(bytes, 0, bytes.Length);
os.Close();
System.Net.WebResponse resp= req.GetResponse();
if (resp == null) return null;
System.IO.StreamReader sr = new System.IO.StreamReader(resp.GetResponseStream());
return sr.ReadToEnd().Trim();
}
catch (Exception ex) { }
return null;
}
电话中的网站就是一个例子,因为有了这个和其他网站,我无法正确检索结果。我收到异常“错误403”
任何人都可以通过告诉我可能做错了什么来帮助我吗?
我认为问题出在编码/解码上 - 实际上使用Fiddler它问我是否要在看到文本之前解码 - 但是使用另一个网站,用于示例,我从Fiddler收到相同的消息但是我可以毫无问题地检索响应。
提前致谢。
答案 0 :(得分:1)
HTTP 403错误表示“禁止访问”。目的地网站因其自身原因拒绝履行您的请求。
鉴于这个特定的网站http://iunlocker.net/,我猜测它可能正在检查HTTP_REFERER。换句话说,它拒绝满足您的请求,因为它知道它不是来自正在查看表单的浏览器。
[编辑]查看
的回复后curl --form ime_i=013270000134001 -i http://iunlocker.net/check_imei.php
我可以看到即时响应是设置cookie和重定向。
HTTP/1.1 307 Temporary Redirect
Server: nginx
Date: Wed, 03 Jul 2013 04:00:27 GMT
Content-Type: text/html
Content-Length: 180
Connection: keep-alive
Set-Cookie: PMBC=35e9e4cd3a7f9d50e7f3bb39d43750d1; path=/
Location: http://iunlocker.net/check_imei.php?pmtry=1
<html>
<head><title>307 Temporary Redirect</title></head>
<body bgcolor="white">
<center><h1>307 Temporary Redirect</h1></center>
<hr><center>nginx</center>
</body>
</html>
这个网站不希望你刮它;如果你想打败它,你将不得不使用它的饼干。
答案 1 :(得分:0)
http://en.wikipedia.org/wiki/HTTP_403 - 网络服务器拒绝您访问该网址。
也许您正在使用的IP地址不允许访问该资源。检查Web服务器。