簡體   English   中英

我想在我的C#應用​​程序中進行以下curl調用

[英]i want to make the following curl call in my C# application

我想在我的C#應用​​程序中進行以下curl調用:我是代碼的初學者 **此代碼獲取facebook上城市的json響應,其中包含來自Facebook圖形api的字符“ a”和字符“ b”,我試圖使其出錯請求中止:連接意外關閉**

  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;
    }

問題在於您的using語句

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

在using語句的末尾,流被處置,因此當您嘗試讀取結束時,它不再起作用。 如果您這樣重寫,它應該可以工作。

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

然后,在讀取所有數據之后將流丟棄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM