我想在我的c#应用程序中进行以下curl调用

本文关键字:curl 调用 我的 应用程序 | 更新日期: 2023-09-27 17:50:18

我想在我的c#应用程序中进行以下curl调用:**这个代码得到json响应的城市在facebook上包含字符'a'和字符'b'从facebook图形api我试图使它我有错误的请求被中止:连接被意外关闭**

  private JArray Getcities(string token)
{
    try
    { 
    string s1 = "access_token="+Server.UrlEncode(token);
    string s2 = "&batch=" + Server.UrlEncode(" [ { '"method'": '"get'", '"relative_url'":'"search?type=adgeolocation&location_types=city&region_id=3871&country_code=us&limit=3000&q=a'" }, { '"method'": '"get'", '"relative_url'": '"search?type=adgeolocation&location_types=city&region_id=3871&country_code=us&limit=3000&q=b'" } ]");

         HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create("https://graph.facebook.com/v2.3/");//make url
        httpRequest.Method = "Post";
        httpRequest.ContentType = "text/json; charset=utf-8";
        byte[] bytedata = Encoding.UTF8.GetBytes(s1 + s2);
        httpRequest.ContentLength = bytedata.Length;
        Stream requestStream = httpRequest.GetRequestStream();
        requestStream.Write(bytedata,0,bytedata.Length);
      requestStream.Close();
        StreamReader reader;
        HttpWebResponse httpWebResponse = (HttpWebResponse) httpRequest.GetResponse()
            using (var responsestream = httpWebResponse.GetResponseStream())
            {
                reader = new StreamReader(responsestream, encoding: Encoding.UTF8);
            }

        var apiData = reader.ReadToEnd();
        Response.Write(apiData);
        var data = JArray.Parse(apiData).ToString();
        //var s = data["data"].ToString();
        var x = JArray.Parse(data);
        return x;
    }

我想在我的c#应用程序中进行以下curl调用

问题是你的using语句

using (var responsestream = httpWebResponse.GetResponseStream())
{
    reader = new StreamReader(responsestream, encoding: Encoding.UTF8);
}

在using语句结束时,流被处理,因此当您尝试read到end时它不再工作。如果你像这样重写,它应该可以工作。

byte[] apiData; 
using (var responsestream = httpWebResponse.GetResponseStream())
{
    reader = new StreamReader(responsestream, encoding: Encoding.UTF8);
    apiData = reader.ReadToEnd();
}