分别读取Web请求的数据

时间:2015-04-26 22:49:29

标签: c# asp.net asp.net-mvc

我正在尝试从此链接读取数据以检查域可用性:

private bool DomainAvailble(string domain)
        {
            string response = "";
            StreamReader objReader;
            string sURL;
            sURL = "https://testapi.internet.bs/Domain/Check?ApiKey=testapi&Password=testpass&Domain=" + domain;
            WebRequest wrGETURL;
            wrGETURL = WebRequest.Create(sURL);
            try
            {
                Stream objStream;
                objStream = wrGETURL.GetResponse().GetResponseStream();
                objReader = new StreamReader(objStream);
                response = objReader.ReadToEnd();
                objReader.Close();
                objReader.Dispose();
            }
            catch (Exception ex)
            {
                ex.ToString();
            }

            var test = response.ToArray();

            if (ContainsInvariant(response, "nstatus=AVAILABLE"))
                return true;
            else
                return false;
        }

        private bool ContainsInvariant(string sourceString, string filter)
        {
            return sourceString.ToLowerInvariant().Contains(filter);
        }

但是此代码无效,但我可以将结果读作:

transactid = 860d5feb048352ae25b8bd4134a4910b \ n状态= UNAVAILABLE \ ndomain = common.com \ nminregperiod = 1Y \ nmaxregperiod = 10Y \ nregistrarlockallowed = YES \ nprivatewhoisallowed = YES \ nrealtimeregistration = YES

在此结果中读取域名是否可用的状态的方法是什么?有没有办法可以读取每个值?

1 个答案:

答案 0 :(得分:1)

您的ContainsInvariant函数有错误。它并没有强制过滤器为小写。您可能需要查看this SO question以获得更好的方法来处理不区分大小写的包含。

就读取每个值而言,只需使用String.Split方法将其拆分为" \ n"换行符,它将为每个键/值对提供一个数组。然后,您可以在" ="上进一步拆分这些对。等号以分别获得键和值。