【问题标题】:How can I implement curl (Pushbullet API) into my program?如何在我的程序中实现 curl(Pushbullet API)?
【发布时间】:2016-03-23 13:02:24
【问题描述】:

如何将官方Pushbullet API 网站上给出的 curl 命令实现到我的 C# 程序中?

例子:

curl --header 'Access-Token: <your_access_token_here>' \
https://api.pushbullet.com/v2/users/me

我可以以某种方式直接将该代码写入我的 C# 程序,还是使用 php?

【问题讨论】:

标签: c# php api curl pushbullet


【解决方案1】:

你可以使用HttpClient

这是我使用 httpClient 发出 get/post 请求的简单代码 sn-p

public async Task<T> MakeHttpClientRequestASync<T>(string requestUrl, string authenticationToken,
                Dictionary<string, string> requestContent, HttpMethod verb, Action<Exception> error)
{
     var httpClient = new HttpClient();
    //// add access token to AuthenticationHeader
     httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Access-Token",authenticationToken);
     HttpResponseMessage response;

     var returnVal = default(T);

     try
      {
       if (verb == HttpMethod.Post)
        {
         response = await httpClient.PostAsync(requestUrl, new FormUrlEncodedContent(requestContent));
        }
        else
        {
           response = await httpClient.GetAsync(requestUrl);
        }

        var resultString = await response.Content.ReadAsStringAsync();
        //// DeserializeObject using Json.net
        returnVal = JsonConvert.DeserializeObject<T>(resultString);
       }
       catch (Exception ex)
       {
         error(ex);
       }

    return returnVal;
}

这样称呼它:

MakeHttpClientRequestASync<T>("https://api.pushbullet.com/v2/users/me","your auth token",null, HttpMethod.Get,(errorAction)=>
                        {
                            // do something}
                        });

【讨论】:

  • 我尝试完全使用您的代码,但出现 3 个错误:是 efaultRequestHeaders 还是 DefaultRequestHeaders 以及 AuthenticationHeaderValue 加下划线,而 JsonConvert 加下划线。除了使用 System.Net.Http; 之外,我是否还包含任何其他内容?如果这是一个愚蠢的问题,我很抱歉。
  • 对不起,这是一个打字错误,我编辑了我的答案。是的,您需要添加using System.Net.Http; using System.Net.Http.Headers; using Newtonsoft.Json;
  • 您需要安装 Json.net, Json.net ,但也可以只返回字符串响应
  • 好的,我已经安装了 Json.net,但是我调用它的行仍然不起作用 MakeHttpClientRequestASync(...) 用绿色下划线表示我应该考虑 Await - 运营商。它还说找不到 T 命名空间
  • 是的,因为它是一个同步方法,而且这个方法是通用的,你需要实现你的响应对象并将其替换为 'T' 。你需要了解更多关于async and generic methods
猜你喜欢
  • 1970-01-01
  • 2020-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多