【问题标题】:Mailgun POST /messages API always throw 401 forbiddenMailgun POST /messages API 总是抛出 401 被禁止
【发布时间】:2015-08-30 19:28:17
【问题描述】:

我正在尝试使用改造库在 Android 中发送 Mailgun POST /messages API 请求。

以下是改造请求:

HTTP POST https://api:key-xxx/v3/sandboxxxx/messages

缓存控制:无缓存
内容类型:application/x-www-form-urlencoded
内容长度:148

from=Excited+User+%3Cmailgun%40sandboxxxxmailgun.org%3E&to=vir.jain%40gmail.com&subject=Hello&text=Testing+awesomeness

回应: HTTP 401 https://api:key-xxx/v3/sandboxxxx.mailgun.org/messages (1966ms)
服务器:nginx/1.7.9
日期:2015 年 6 月 15 日星期一 10:00:37 GMT
内容类型:文本/html;字符集=utf-8
内容长度:9
连接:保持活动
WWW-Authenticate: Basic realm="MG API"
OkHttp 选定协议:http/1.1
OkHttp-Sent-Millis:1434362440805
OkHttp-Received-Millis:1434362441086
禁止

当我在 Postman 上尝试同样的请求时,它运行良好并且电子邮件发送正确。但是,当使用来自 Android 的改造库发送时因禁止而失败。

我的改造 API: @FormUrlEncoded @POST("/消息") public void sendEmail(@Field("from") String from, @Field("to") String to, @Field("subject") String subject, @Field("text") String text, RestCallback objectRestCallback);

基本网址是: https://api:key-xxx/v3/sandboxxxsandboxxxx.mailgun.org

一切都是表单 URL 编码的。但我真的不确定出了什么问题。 谁能帮我看看上面的API有什么问题?

谢谢你, 马哈维亚

【问题讨论】:

  • en.wikipedia.org/wiki/Basic_access_authentication ... 当我在 Postman 上尝试同样的请求时,它可以完美运行
  • Umm .. 在 Postman 中,我在 URL 本身“username:password@url”中发送身份验证参数并且它正在工作.. 但是在使用 Retrofit 库调用 java 时同样的事情不起作用。
  • 在尝试使用 Mailgun 和 Paw 时遇到同样的问题 - 接受的答案解决了它。

标签: android mailgun


【解决方案1】:

我在请求中添加了以下带有 API 密钥 Base64 编码字符串的授权标头,它开始工作了。

request.addHeader("授权", "基本"+getBase64String("api:key-xxxYOUR-API-KEY>"));

@Selvin:非常感谢您发送 wiki 链接 :)。

【讨论】:

  • 您将希望从此答案中删除 apikey。您可能还需要联系 Stackoverflow,了解如何从答案历史记录中删除 apikey。
【解决方案2】:

您需要指定您的邮枪区域:mg.SetAPIBase(mailgun.APIBaseEU)

// Create an instance of the Mailgun Client
mg := mailgun.NewMailgun(yourDomain, privateAPIKey)
mg.SetAPIBase(mailgun.APIBaseEU)

【讨论】:

    猜你喜欢
    • 2020-12-08
    • 2018-10-14
    • 1970-01-01
    • 1970-01-01
    • 2021-09-28
    • 1970-01-01
    • 2014-07-04
    • 2021-08-19
    • 2020-02-11
    相关资源
    最近更新 更多