2012-04-30 23 views
2

与此类似论坛的帖子: https://developer.citrixonline.com/forum/request-not-expected-formatGoToWebinar - 请求不是预期的格式 - RestSharp

但是他并没有真正解释他发现错了他的代码。

我正在使用RestSharp进行API调用。我已经能够得到它很好的工作来拉动即将举行的网络研讨会的清单,但是当我尝试注册参与者时,我一直得到400 /请求没有出现预期的格式错误。

在此之后文档https://developer.citrixonline.com/api/gotowebinar-rest-api/apimethod/create-registrant,这里是我的代码:

var client = new RestClient(string.Format("https://api.citrixonline.com/G2W/rest/organizers/{0}/webinars/{1}/registrants", "300000000000xxxxxx", btn.CommandArgument)); 
var request = new RestRequest(Method.POST); 
request.RequestFormat = DataFormat.Json; 

request.AddHeader("Accept", "application/json"); 
request.AddHeader("Accept", "application/vnd.citrix.g2wapi-v1.1+json"); 
request.AddHeader("Authorization", "OAuth oauth_token=" + System.Configuration.ConfigurationManager.AppSettings["GoToWebinar"]); 

request.AddParameter("firstName", LoggedInUser.FirstName); 
request.AddParameter("lastName", LoggedInUser.LastName); 
request.AddParameter("email", LoggedInUser.Email); 

var response = client.Execute(request); 
var statusCode = response.StatusCode; 

我如何能弄清楚为什么我不断收到这个错误任何见解?

谢谢!

回答

1

而不是使用AddParamter(添加键/值参数请求体)的,你需要写JSON代替:

request.DataFormat = DataFormat.Json; 
request.AddBody(new { 
    firstName = LoggedInUser.FirstName, 
    lastName = LoggedInUser.LastName, 
    email = LoggedInUser.Email 
}); 

您还需要清除处理程序(自动设置接受头)如果你想直接指定他们:

client.ClearHandlers(); 
+0

这样做,非常感谢你!我认为有一个选择使用AddBody或AddParameter,如果它设置为DataFormat = Json它会从参数中产生Json体。 –