【问题标题】:Split and Append string at specific point在特定点拆分和附加字符串
【发布时间】:2018-02-11 03:25:59
【问题描述】:

我使用了 Web API

https://api.nasa.gov/planetary/earth/imagery?lon=100.75&lat=1.5&date=2014-02-01&cloud_score=True&api_key=DEMO_KEY

并显示上面的参数

方法输入: imagery?lon=100.75&lat=1.5&date=2014-02-01&cloud_score=True&api_key=DEMO_KEY

预期输出: 方法名称:图像 参数:lon、lat、date、cloud_score、api_key 值:100.75、1.5、2014-02-01、True、api_key

方法输入: 浏览?lon=100.75&lat=1.5&date=2014-02-01

预期输出: 方法名称:浏览 参数:经度、纬度、日期 值:100.75、1.5、2014-02-01

方法输入: ?lon=100.75&lat=1.5&date=2014-02-01 预期输出:

错误:网址格式错误

方法输入: 浏览?lon=100.75&lat=1.5&date

预期输出: 错误:网址格式错误

方法输入: 浏览?

预期输出: 错误:网址格式错误

方法输入: 浏览

预期输出: 方法名:浏览

我需要将 API 从问号前的任何单词中拆分出来

这是我目前的代码

if (S == null || S=="")
{
    lbOutput.Text = "Please dont leave Fields Empty";

}
else
{
    if (S.Contains("?") || S.Contains("&"))
    {
        lbOutput.Text = "Output";
        string url = txtInput.Text;
        string querystring = url.Substring(url.IndexOf("?"));
        System.Collections.Specialized.NameValueCollection parameters =
            System.Web.HttpUtility.ParseQueryString(querystring);
        //lbOutput.Text = querystring;
        lbLonRes.Text = System.Web.HttpUtility.ParseQueryString(querystring).Get("lon");
        lbLatRes.Text = System.Web.HttpUtility.ParseQueryString(querystring).Get("lat");
        lbDateRes.Text = System.Web.HttpUtility.ParseQueryString(querystring).Get("date");
        lbCloudRes.Text = System.Web.HttpUtility.ParseQueryString(querystring).Get("cloud_score");
        lbAPIRes.Text = System.Web.HttpUtility.ParseQueryString(querystring).Get("api_key");
    }
    if(S.Contains(" "))
    {
        lbOutput.Text = "Error: malformed URL";
        lbLonRes.Text = "";
        lbLatRes.Text = "";
        lbDateRes.Text = "";
        lbCloudRes.Text = "";
        lbAPIRes.Text = "";
    }
}

【问题讨论】:

    标签: c# winforms api split append


    【解决方案1】:

    您可以使用Uri 类的Segments 属性来获取方法,因为它将是最后一段。

    您需要引用System.Net.HttpFormatting 才能使用此代码,它将消除您对System.Web 的依赖

    using System;
    using System.Net.Http;
    
    namespace ConsoleApplication8
    {
        class Program
        {
            static void Main(string[] args)
            {
                string url = "https://api.nasa.gov/planetary/earth/imagery?lon=100.75&lat=1.5&date=2014-02-01&cloud_score=True&api_key=DEMO_KEY";
                Uri theUri = new Uri(url);
    
                string method = theUri.Segments[theUri.Segments.Length - 1];
    
                Console.WriteLine("Method: {method}");
    
                var qa = theUri.ParseQueryString();
    
                foreach (string item in qa.AllKeys)
                {
                    Console.WriteLine($"key: {item}, value: {qa[item]}");
                }
    
                Console.ReadKey();
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-16
      • 2023-03-05
      • 1970-01-01
      • 2015-12-18
      • 2015-11-14
      • 1970-01-01
      相关资源
      最近更新 更多