我想访问一个网页&将网页的内容存储到数据库中 这是我尝试阅读网页内容的代码
public static WebClient wClient = new WebClient();
public static TextWriter textWriter;
public static String readFromLink()
{
string url = "http://www.ncedc.org/cgi-bin/catalog-search2.pl";
HttpWebRequest webRequest = WebRequest.Create(url) as HttpWebRequest;
webRequest.Method = "POST";
System.Net.WebClient client = new System.Net.WebClient();
byte[] data = client.DownloadData(url);
string html = System.Text.Encoding.UTF8.GetString(data);
return html;
}
public static bool WriteTextFile(String fileName, String t)
{
try
{
textWriter = new StreamWriter(fileName);
}
catch (Exception)
{
return false;
Console.WriteLine("Data Save Unsuccessful: Could Not create File");
}
try
{
textWriter.WriteLine(t);
}
catch (Exception)
{
return false;
Console.WriteLine("Data Save UnSuccessful: Could Not Save Data");
}
textWriter.Close();
return true;
Console.WriteLine("Data Save Successful");
}
static void Main(string[] args)
{
String saveFile = "E:/test.txt";
String reSultString = readFromLink();
WriteTextFile(saveFile, reSultString);
Console.ReadKey();
}
但是这段代码给了我一个o / p as- This script should be referenced with a METHOD of POST. REQUEST_METHOD=GET
请告诉我如何解决此问题
答案 0 :(得分:3)
您正在将HttpWebRequest与System.Net.WebClient代码混合使用。他们是不同的。您可以使用WebClient.UploadValues通过WebClient发送POST。您还需要提供一些POST数据:
System.Net.WebClient client = new System.Net.WebClient();
NameValueCollection postData = new NameValueCollection();
postData.Add("format","ncread");
postData.Add("mintime","2002/01/01,00:00:00");
postData.Add("minmag","3.0");
postData.Add("etype","E");
postData.Add("outputloc","web");
postData.Add("searchlimit","100000");
byte[] data = client.UploadValues(url, "POST", postData);
string html = System.Text.Encoding.UTF8.GetString(data);
您可以通过检查Fiddler中的POST消息来找出要传递的参数。是的,正如@Chris Pitman评论的那样,使用File.WriteAllText(path, html);
答案 1 :(得分:0)
我不确定你是否有错,因为我只是打开页面就得到了同样的信息。页面源不包含任何HTML,因此我不认为你可以做webRequest.Method =" POST"。你有没有和网站管理员说过话?
答案 2 :(得分:0)
.NET框架提供了一组丰富的方法来访问存储在Web上的数据。首先,您必须包含正确的命名空间:
using System.Text;
using System.Net;
using System.IO;
HttpWebRequest对象允许我们创建对URL的请求,而WebResponse允许我们读取对请求的响应。
我们将使用StreamReader对象将响应读入字符串变量。
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(URL);
myRequest.Method = "GET";
WebResponse myResponse = myRequest.GetResponse();
StreamReader sr = new StreamReader(myResponse.GetResponseStream(), System.Text.Encoding.UTF8);
string result = sr.ReadToEnd();
sr.Close();
myResponse.Close();
在此代码示例中,URL变量应包含您要获取的URL,结果变量将包含网页的内容。您可能还想为实际应用程序添加一些错误处理。
答案 3 :(得分:0)
据我所知,您要求的URL是perl脚本。我认为它要求POST获取搜索参数,从而提供搜索结果。