0

Unixマシンにscrapydとspiderをインストールしましたが、実行するとすべて正常に動作します

curl http://localhost:6800/schedule.json -d project=myproject -d spider=somespider

Scrapyd API の Web インターフェイスで、ジョブのステータス、ログ、およびアイテムを確認できます。要するに、すべてが期待どおりに機能しています。

今私は、C# を使用して ASP.Net の API に http 投稿を作成することにより、プログラムでスパイダーを開始したいと考えています。

{"status": "error", "message": "'project'"}

私は例を見つけましたhttp://mahmoud.abdel-fattah.net/2012/07/04/super-simple-and-basic-scrapyd-web-interface/comment-page-1/それはJquery投稿を作成し、これ例は私にとってはうまくいきますが、以下の例は私にとってはうまくいきません

public void StartCrawler()
        {
            var httpWebRequest = (HttpWebRequest)WebRequest.Create("http://mydomain.com:6800/schedule.json");
            httpWebRequest.ContentType = "application/json; charset=utf-8";
            //httpWebRequest.ContentType = "text/json;; charset=utf-8";
            httpWebRequest.Method = "POST";

            using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
            {
                string json = "{\"project\":\"projectname\",\"spider\":\"spidername\"}";

                streamWriter.Write(json);
            }

            var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
            using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
            {
                var responseText = streamReader.ReadToEnd();
            }
        }

私が間違っていることを教えてください

4

1 に答える 1

0

私はそれを解決しました

public static string StartCraling(string URI, string Parameters)
        {
            WebRequest req = 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;

            using (Stream os = req.GetRequestStream())
            {
                os.Write(bytes, 0, bytes.Length); //Push it out there
            }

            using (WebResponse resp = req.GetResponse())
            {
                using (StreamReader sr = new System.IO.StreamReader(resp.GetResponseStream()))
                {
                    return sr.ReadToEnd().Trim();
                }
            }
        }
于 2013-11-07T13:51:21.883 に答える