【问题标题】:C# authorization in HTTP request Plivo APIHTTP请求Plivo API中的C#授权
【发布时间】:2014-04-19 03:48:51
【问题描述】:

我正在尝试使用 Plivo 从我的 WindowsStore 应用程序中发送短信。这几乎是可行的:

// These first 3 lines don't do what I want
var unamepass = AuthID + ":" + AuthToken;
var auth = new HttpCredentialsHeaderValue("Basic", unamepass);
httpClient.DefaultRequestHeaders.Authorization = auth;

string textBody = "sample message";
var plivoText = new
{
    src = plivoNumber,
    dst = phoneNumber,
    text = textBody
};
string Serial = JsonConvert.SerializeObject(plivoText);
IHttpContent PlivoJsonContent = new HttpJsonContent(JsonValue.Parse(Serial));
HttpResponseMessage PlivoResponse = 
    await httpClient.PostAsync(
        new Uri("https://api.plivo.com/v1/Account/<AuthID>/Message/")
        , PlivoJsonContent);

现在,这段代码可以工作……技术上。我收到了 202 回复。但是,在它发送文本之前,屏幕上会弹出一个大的身份验证。

如果我输入正确的数据,我会得到 202 并发送文本,否则我无法发送数据。我想知道如何以编程方式将其添加到请求中,因此我不必手动进行。我很确定这与 sn-p 的前 3 行有关,但我在网上找到的文档对我没有太大帮助。 我不能使用 RestSharp,因为 Windows 商店项目不支持它,所以我更喜欢 HttpClient 解决方案。

Plivo 使用什么“方案”?我应该如何构造 HttpCredentialsHeaderValue?第 3 行是否正确?

【问题讨论】:

  • 登录时尝试查看浏览器和服务器之间的流量。你可以使用telerik.com/fiddler
  • 我用 fiddler2 查看了数据包,在 Auth 标头下它说 Authorization Header 存在,但嵌入的数据无法解码。它看起来像这样:

标签: c# windows-store-apps http-authentication dotnet-httpclient plivo


【解决方案1】:

答案非常简单。您必须将字符串转换为 base64 才能将其发送到标头。

见:Convert UTF-8 to base64 string

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-28
    • 1970-01-01
    • 2021-04-04
    • 2015-03-08
    • 2020-08-17
    • 2018-05-04
    • 2021-04-26
    • 2017-01-27
    相关资源
    最近更新 更多