Meetup.com API使用JSON数据创建事件
本文关键字:数据 创建 事件 JSON 使用 com API Meetup | 更新日期: 2024-09-24 03:22:57
我正试图从C#项目在Meetup上创建一个事件。我正在尝试使用这个API方法。
我已经尝试了很多东西,现在我已经尽可能地简化了。我的问题是,当我发送请求时,我会收到Bad request,并返回错误消息"name is required"。我错过了什么?
这是相关的部分:
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形式发送)仍无法通过。
似乎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();
}
}
}