我试图在P#中为Pushbullet API重现这个Curl调用。
curl https://api.pushbullet.com/v2/pushes \
-u <your_api_key_here>: \
-d device_iden="<your_device_iden_here>" \
-d type="note" \
-d title="Note title" \
-d body="note body" \
-X POST
以下是我复制它的代码:
var response = default(IRestResponse);
var request = new RestRequest(Method.POST) { RequestFormat = DataFormat.Json };
var client = new RestClient();
client.BaseUrl = "https://api.pushbullet.com/v2/";
request.Resource = "pushes";
var bodyInformation = string.Concat(" { \"", Config.Settings.PushbulletAPIKey,
"\": { \"type\":\"note\", \"title\":\"", title, "\", \"body\":\"", message, "\" } }");
request.AddBody(bodyInformation);
response = client.Execute(request);
当我发送它时,它会返回:
{"error": {"message": "authentication token is missing or invalid.", "type": "invalid_user"}}
对于参考,这里是API页面:
答案 0 :(得分:3)
您正在传递正文中的凭据,而不是设置客户端的Authenticator
属性以使用基本身份验证传递它们。
curl -u
开关使用用户名:密码凭据对服务器进行基本身份验证。您发布的声明使用API密钥作为用户名和空密码。
你应该使用类似的东西:
client.Authenticator = new HttpBasicAuthenticator(
Config.Settings.PushbulletAPIKey, "");