【问题标题】:Meetup.com API create event with JSON dataMeetup.com API 使用 JSON 数据创建事件
【发布时间】:2016-04-16 15:21:43
【问题描述】:

我正在尝试通过 C# 项目在 Meetup 上创建活动。我正在尝试使用this API method

我已经尝试了很多东西,现在我已将其简化为尽可能简单。我的问题是,当我发送请求时,我收到错误请求,并显示“需要名称”的错误消息。我错过了什么?

这是相关的部分:

var address = await GetAddressAsync(apiPath); 
// address is like: http://api.meetup.com/{groupID}/events?sign=true&key={API key}

var request = WebRequest.Create(address);
request.Method = "POST";
request.ContentType = "application/json";

var json = "{name: \"Tenshiko's Test Event\"}"; //JsonConvert.SerializeObject(requestObject);
using (var streamWriter = new StreamWriter(request.GetRequestStream()))
{
    streamWriter.Write(json);
}

try
{
    WebResponse response = await request.GetResponseAsync();

    var dataStream = response.GetResponseStream();
    StreamReader reader = new StreamReader(dataStream);
    string responseString = reader.ReadToEnd();

    var model = JsonConvert.DeserializeObject<TResponse>(responseString);

    reader.Close();
    dataStream.Close();
    response.Close();

    return model;
}
catch (WebException e)
{
    using (WebResponse response = e.Response)
    {
        HttpWebResponse httpResponse = (HttpWebResponse)response;

        using (Stream data = response.GetResponseStream())
        using (var reader = new StreamReader(data))
        {
            string text = reader.ReadToEnd();
        }
    }
}

编辑: 我尝试按照建议将“&name=something”添加到地址中,它可以工作......但是,问题还没有解决。事件已创建,但其余数据(我以 json 格式发送)仍然无法通过。

【问题讨论】:

  • 文档将“名称”列为必需参数,但您的查询字符串中没有任何位置。它应该类似于:http://api.meetup.com/{groupID}/events?name={name}&amp;sign=true&amp;key={API key}
  • 是的,但是文档也说,它支持 json 格式。另外,我很难相信这些数据应该在查询参数中发送,特别是因为“描述”字段可能有 50k 个字符长。

标签: c# json meetup


【解决方案1】:

似乎 StreamWriter 没有向您的 POST 请求添加任何数据,请尝试以下操作:

var address = await GetAddressAsync(apiPath); 
// address is like: http://api.meetup.com/{groupID}/events?sign=true&key={API key}

var json = "{name: \"Tenshiko's Test Event\"}"; 
var encoding = new ASCIIEncoding ();
var byte1 = encoding.GetBytes(json);

var request = WebRequest.Create(address);
request.Method = "POST";
request.ContentType = "application/json";
request.ContentLength = byte1.Length;

using (var reqstream = new request.GetRequestStream())
{
    reqstream.Write(byte1, 0, byte1.Length);
}

try
{
    WebResponse response = await request.GetResponseAsync();

    var dataStream = response.GetResponseStream();
    StreamReader reader = new StreamReader(dataStream);
    string responseString = reader.ReadToEnd();

    var model = JsonConvert.DeserializeObject<TResponse>(responseString);

    reader.Close();
    dataStream.Close();
    response.Close();

    return model;
}
catch (WebException e)
{
    using (WebResponse response = e.Response)
    {
        HttpWebResponse httpResponse = (HttpWebResponse)response;

        using (Stream data = response.GetResponseStream())
        using (var reader = new StreamReader(data))
        {
            string text = reader.ReadToEnd();
        }
    }
}

【讨论】:

  • 我刚试过。结果是一样的。还是没有名字。
猜你喜欢
  • 2022-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-21
  • 2020-08-29
  • 2014-05-21
相关资源
最近更新 更多