Невозможно опубликовать PIN-код с помощью Pinterest API с использованием C# - PullRequest
0 голосов
/ 28 марта 2020

Исключение WebException вызывается при вызове функции PostData () для закрепления изображения на доске интереса. У кого-нибудь есть идеи, почему? Я поместил комментарий прямо перед строкой кода, которая вызывает исключение. Я сделал тест, используя Pinterest API Explorer, и он работает. Я просто не могу заставить его работать в C#.

public void postPinterest(string messages, string id, string usertoken, string image_url, string boardname, string username, string link)
{
    //string link = null;
    boardname = boardname.Replace(" ", "-");

    string board = username + "/" + boardname;
    string url = "https://api.pinterest.com/v1/pins?access_token=" + usertoken;

    StringBuilder sb = new StringBuilder();
    if (!string.IsNullOrEmpty(board))
        sb.Append("&board=" + HttpUtility.UrlEncode(board));
    if (!string.IsNullOrEmpty(messages))
        sb.Append("&note=" + HttpUtility.UrlEncode(messages));
    if (!string.IsNullOrEmpty(image_url))
        sb.Append("&image_url=" + HttpUtility.UrlEncode(image_url));
    if (!string.IsNullOrEmpty(link))
        sb.Append("&link=" + HttpUtility.UrlEncode(link));

    string postdata = sb.ToString().Substring(1);
    PostData(url, postdata);
}

private object PostData(string url, string postdata)
{
    object json = null;
    try
    {
        HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
        req.Method = "POST";
        req.ContentType = "application/x-www-form-urlencoded";
        //  req.Accept = "application/json";
        using (var stream = req.GetRequestStream())
        {
            byte[] bindata = Encoding.ASCII.GetBytes(postdata);
            stream.Write(bindata, 0, bindata.Length);
        }

        // throws a WebException
        HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
        string response = new StreamReader(resp.GetResponseStream()).ReadToEnd();

        json = JsonConvert.DeserializeObject<dynamic>(response);
        return json;
    }
    catch (WebException wex)
    {
        if (wex.Response != null)
        {
            using (var errorResponse = (HttpWebResponse)wex.Response)
            {
                using (var reader = new StreamReader(errorResponse.GetResponseStream()))
                {
                    string error = reader.ReadToEnd();
                    return json;

                }
            }
        }
    }

    return json;
}
...