C#如何在URL中放置大括号

时间:2018-03-10 13:51:21

标签: c# .net api facebook-graph-api

我一直在尝试从Facebook的图形api资源管理器中获取所需的数据,但不幸的是,无法通过C#传递URL中所需的字段。

这是我到目前为止所尝试的内容

        using (var client = new HttpClient())
        {
            client.BaseAddress = new Uri("https://graph.facebook.com");

            HttpResponseMessage response = client.GetAsync($"cocacola?fields=posts{id,created_time,permalink_url,message,link,type,full_picture}&access_token={textBox1.Text}").Result;
            response.EnsureSuccessStatusCode();

            string result = response.Content.ReadAsStringAsync().Result;

            var jsonRes = JsonConvert.DeserializeObject<dynamic>(result);

            var returned = jsonRes.ToString();

            MessageBox.Show(returned);
        }

通过API获取数据需要做些什么? :)

2 个答案:

答案 0 :(得分:2)

事实证明,存在一个问题,因为您正在使用字符串插值,并且还需要字符串中的花括号。你必须通过加倍来逃避它们。

HttpResponseMessage response = client.GetAsync($"cocacola?fields=posts{{id,created_time,permalink_url,message,link,type,full_picture}}&access_token={textBox1.Text}").Result;

答案 1 :(得分:0)

您的方法不正确因为您尝试添加到网址中的那些变量实际上是字符串,您必须逃避它们以获取其价值
< br /> 因此改变

HttpResponseMessage response = client.GetAsync($"cocacola?fields=posts{id,created_time,permalink_url,message,link,type,full_picture}&access_token={textBox1.Text}").Result;

HttpResponseMessage response = client.GetAsync($"cocacola?fields="+posts{id,created_time,permalink_url,message,link,type,full_picture}+"&access_token="+{textBox1.Text}).Result;

但是这不正确的原因我不认为{textBox1.Text}posts{id,created_time,permalink_url,message,link,type,full_picture}意味着什么