2016-04-15 7 views
0

C#プロジェクトからMeetupでイベントを作成しようとしています。私はthis API methodを使用しようとしています。Meetup.com JSONデータでイベントを作成するAPI

私は数多くのことを試しましたが、今はできる限り簡単にそれを取り除きました。私の問題は、リクエストを送信すると、「名前が必要です」というエラーメッセージが表示され、Bad Requestが返されることです。私は何が欠けていますか?

はここに関連するビットです:

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

EDIT: 私はアドレスを「=何か&名が」提案として追加してみました、そしてそれは...しかし、問題はまだ解決されていない作品。イベントは作成されますが、データの残りの部分(私はjsonとして送信しています)は、何とかしてまだ通過していません。

+0

ドキュメントは必須パラメータとして「名前」を示していますが、あなたはどこにでもでそれを持っていませんあなたの疑問文。 'http://api.meetup.com/{groupID}/events?name={name}&sign=true&key={API key} ' – Negorath

+0

はい、ドキュメントにはjsonがサポートされていると書かれていますフォーマット。また、特に "description"フィールドが50k文字になる可能性があるため、このデータをクエリパラメータで送信する必要があると考えるのは難しいです。 – Tenshiko

答えて

0

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(); 
     } 
    } 
} 
+0

私はそれを試しました。結果は同じです。まだ名前がありません。 – Tenshiko

関連する問題