我正在构建一个使用REST服务的小型应用程序。
REST服务期望与我交互的URL总是将API键作为URL参数。
因此,无论我是GET、POST、UPDATE还是DELETE,我的URL都应该包含这样的内容:
https://rest.service.tld:443/list?api_key=MY-KEY
https://rest.service.tld:443/lists/1/profiles/search?api_key=MY-KEY
我尝试了RestSharp网页上的示例代码,但它得到了状态代码Access Denied
这是我的代码:
// Create client
var client = new RestClient( "https://rest.service.tld:443" );
client.Authenticator = new SimpleAuthenticator( "api_key", "MY-KEY", "", "" );
// GET list of items
var requestLists = new RestRequest( "lists", Method.GET );
IRestResponse<List<ListResponse>> listResponse = client.Execute<List<ListResponse>>( requestLists ); // Returns the correct list
// POST search
var requestProfiles = new RestRequest( "lists/1/profiles/search", Method.POST );
requestProfiles.AddParameter( "Criteria", "{"email":my@email.tld"}" );
IRestResponse profileResponse = client.Execute( requestProfiles ); // Returns 'Access Denied' status code
据我所知,POST
方法不包含正确的查询字符串,而是将我的api_key
作为参数添加到POST
中。
有没有一种方法可以像我需要的那样将我的API_KEY
保持在Querystring中?
默认情况下,api_key被添加为一个普通参数,您需要通过如下设置ParameterType来明确强制要求将参数嵌入URL中:
var requestProfiles = new RestRequest( "lists/1/profiles/search{api_key}", Method.POST );
requestProfiles.AddParameter( "Criteria", "{"email":my@email.tld"}" );
requestProfiles.AddParameter( "api_key", MY-KEY, ParameterType.UrlSegment);
更多信息请点击此处