- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试使用 Delphi XE3 和 Indy10 编写一个使用 Mashape API 服务的客户端应用程序,但我遇到了一些障碍。
这是我尝试过的:
我将 TIdHTTP
和 TIdSSLIOHandlerSocketOpenSSL
组件放在我的表单上,并使用 TIdHTTP.IOHandler
属性将它们链接在一起。然后我在我的表单上放置了一个按钮和备忘录,并将以下代码放在按钮 OnClick
事件上:
procedure TForm1.Button2Click(Sender: TObject);
begin
IdHTTP1.IOHandler := IdSSLIOHandlerSocketOpenSSL1;
IdHTTP1.Request.CustomHeaders.AddValue('X-Mashape-Key: ','<my_api_key>');
Memo1.Lines.Text := IdHTTP1.Get('https://hbrd-v1.p.mashape.com/anime/log-horizon');
end;
然后我启动我的应用程序,当我按下按钮时,应用程序将等待片刻,然后吐出一条 HTTP/1.1 403 Forbidden
错误消息。第二次按下按钮将导致 HTTP/1.1 500 Internal Service Error
消息。
我已经检查过我的系统上是否有所需的 SSL 库文件,我确实有,而且我一次又一次地测试了我的凭据,它们看起来是正确的,而且我知道 url 是正确的,所以我一定是我的代码中缺少某些东西才会导致显示这些错误。我希望在这方面有更多经验的人可以提供一些建议。
更新:这是有效的 TRESTClient
代码:
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, IPPeerClient, Vcl.StdCtrls,
REST.Response.Adapter, REST.Client, Data.Bind.Components,
Data.Bind.ObjectScope;
type
TForm1 = class(TForm)
RESTClient1: TRESTClient;
RESTRequest1: TRESTRequest;
Button1: TButton;
Memo1: TMemo;
RESTResponse1: TRESTResponse;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
RESTClient1.BaseURL := 'https://hbrd-v1.p.mashape.com/anime/log-horizon';
RESTRequest1.Execute;
Memo1.Lines.Text := RESTResponse1.Content;
// The only thing not shown here is the RESTRequest1.Params which are
// Name: 'X-Mashape-Key'
// Value: 'my-api-key'
// Kind: pkHTTPHEADER
// Everything else is included here which isn't much.
end;
end.
我想用 TIdHTTP
做同样的事情。
最佳答案
如果不看到实际的 HTTP 消息来回传输,就很难知道实际发生了什么。当 HTTP 响应指示错误时,EIdHTTPProtocolException
引发异常,其 ErrorMessage
属性包含服务器响应的主体。它是否为您提供了有关错误发生原因的任何指示?
但是,您确实需要更改此设置:
IdHTTP1.Request.CustomHeaders.AddValue('X-Mashape-Key: ','<my_api_key>');
对此:
IdHTTP1.Request.CustomHeaders.Values['X-Mashape-Key'] := '<my_api_key>';
并摆脱程序化 IdHTTP1.IOHandler := IdSSLIOHandlerSocketOpenSSL1;
作业,因为您已经在表单设计器中处理了它。
除此之外,403
错误意味着服务器不接受您的凭据。我没有看到您向 TIdHTTP.Request.Username
分配任何凭证和 TIdHTTP.Request.Password
您的代码中的属性,您是在表单设计器中这样做的吗?
TIdHTTP
使用插件系统来处理 HTTP 身份验证方案。如果服务器允许 BASIC
身份验证,您可以设置 TIdHTTP.Request.BasicAuthentication
属性为真所以 BASIC
当没有其他身份验证方案可用时,用作默认值。您可以使用 TIdHTTP.OnSelectAuthorization
事件以查看服务器实际支持哪些身份验证。
如果服务器想要一个非BASIC
身份验证,您需要添加相关的 IdAuthentication...
给你的uses
启用该插件的子句。例如,IdAuthenticationDigest
对于 DIGEST
身份验证,IdAuthenticationNTLM
对于 NTLM
身份验证等。或者,添加 IdAllAuthentications
单元而不是启用所有插件。
如果您需要使用 Indy 不支持的 HTTP 身份验证(例如 OATH
),您可以:
使用 TIdHTTP.Request.CustomHeaders.Values['Authorization']
手动提供相关凭证数据。
实现自定义 TIdAuthentication
-派生类,并将其实例分配给 TIdHTTP.Request.Authorization
属性或其类类型为 VAuthenticationClass
TIdHTTP.OnSelectAuthorization
的参数事件。
关于delphi - 使用 Indy10 访问 Mashape API 服务的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24643655/
Mashape不给我任何支持,除非它的工作时间所以我希望你能给我一些答案 我正在尝试通过我的 API 上传文件。 有谁知道为什么 mashape 会产生这种错误?这意味着什么或如何解决或避免它。它不是
我正在尝试使用 unirest 库运行 API 到 dmoz。这是我的代码: ============================================= ===============
我需要你的帮助。我在 MaShape 上找到了一个用于 Metascore 的 API,但我无法让它工作。我使用 Cocoapod 下载了 Unirest 框架并从 Mashape 复制粘贴了代码片段
Zuul 和 kong 都作为微服务架构中一个很好的 API 网关层。这两者之间有哪些重要区别? 最佳答案 对于那些查看一些数字的人来说,这是一个 great post比较不同的解决方案。 我一直在
我正在使用 mashape api 获取速度发布跟踪信息:- https://www.mashape.com/blaazetech/indian-post 因为这是在 .NET c# 中,所以以下代码
我正在 Swift 3 for iOS 中构建一个小型应用程序,我用于获取该应用程序数据的 api 有一个 cURL 请求。API的cURL请求如下: // curl -X PO
如何缓存 Mashape API 调用。我得到了下面的代码,但它似乎没有进行缓存。 Mashape 使用 unirest 来获取 API 响应。 def fetchMashape(url, heade
我正在尝试使用 Delphi XE3 和 Indy10 编写一个使用 Mashape API 服务的客户端应用程序,但我遇到了一些障碍。 这是我尝试过的: 我将 TIdHTTP 和 TIdSSLIOH
我尝试使用 Mashape 的“Yoda Speak”API。我得到了二进制数据,但我不知道如何解析数据。当我尝试打印数据时,收到此消息。“(消息,缺少 Mashape 应用程序 key 。转到 ht
尝试上传用户图片但没有成功。 HTML: 前端 JS: var fileInput = document.getElementById('gg_test_input');
我是 mashape unirest 的新手,我似乎不知道我做错了什么。 我使用 maven 使用 unirest 作为依赖项,如下所示: com.mashape.unir
我尝试在 Swift 中使用 Mashape 的“Yoda Speak”API。我将从 API 打印数据。我在“getData”方法之后成功调用“response”方法,但我的模拟器不在“respon
我正在通过 Mashape.com 使用名为 Lamda (https://www.mashape.com/lambda) 的 API,这是一种人脸识别 API。 当我从识别请求中得到结果时,它会给我
我尝试使用 Maven 安装依赖项 Unirest。我下载了 .jar 文件 (unirest-java-1.4.9.jar) 并将其添加到 POM 中,如下所示:
今天我安装了Kong (API 管理层)在我的 Mac OS X (Yosemite 10.10.5) 上。我使用的 .pkg 文件是 available here 。我按照安装说明进行操作,一切都很
嗨,我是新的 Rest,正在开发 API,其中我从客户端获得的请求参数每次都不同。然后我将不得不调用另一个 API。我想编写一种方法来从 3rd 方 API 获取 JSON 数据。我在网上查了一下,所
问题 在 Eclipse 中运行 Maven“编译”、“安装”命令来创建可执行 JAR 并继续运行该 JAR 后,出现以下错误 错误:无法初始化主类 org.example.project.Stock
我有以下示例 Activity : package teste.myapplication; import android.support.v7.app.ActionBarActivity; impo
我有一个使用 Mashape Unirest 的 Maven Java 项目。用于向其他 URL 发送 HTTP 请求。我目前正在编写一个集成测试(使用 TestNG),它使用 Unirest 发送一
我正在尝试在 fuse 服务器上进行一些更改后在其上部署 bundle 。我添加了 unirest 依赖项来执行 REST 调用。 构建在本地计算机和 Jenkins 上运行良好,但 bundle 抛
我是一名优秀的程序员,十分优秀!