gpt4 book ai didi

delphi - Bing 搜索 API Azure 市场身份验证(Delphi + Indy)

转载 作者:行者123 更新时间:2023-12-02 05:24:06 25 4
gpt4 key购买 nike

有人能指出正确的方向吗?我正在尝试使用新的 Bing API 执行网络搜索,但使用下面的代码我不断收到“HTTP/1.1 400 Bad Request”。相同的请求在浏览器下运行良好(将用户名留空并在提示框中提供密码下的 key )。

var
IdHTTP1 : TIdHTTP;
uri : string;
myIOhandler : TIdSSLIOHandlerSocketOpenSSL;
begin
myIOhandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
with myIOhandler do
begin
SSLOptions.Method := sslvTLSv1;
SSLOptions.Mode := sslmUnassigned;
SSLOptions.VerifyMode := [];
SSLOptions.VerifyDepth := 0;
host := '';
end;

IdHTTP1:= TIdHTTP.Create(nil);
IdHTTP1.Request.UserAgent:= 'Mozilla/3.0 (compatible; IndyLibrary)';
IdHTTP1.Request.Accept := 'text/javascript';
IdHTTP1.Request.ContentType := 'application/json';
IdHTTP1.Request.ContentEncoding := 'utf-8';

IdHTTP1.HandleRedirects:= True;
IdHTTP1.ConnectTimeout:= 10000;
IdHTTP1.ReadTimeout:= 10000;
IdHTTP1.Request.CacheControl := 'no-cache';
IdHTTP1.Request.BasicAuthentication:= True;
IdHTTP1.Request.Authentication:= TIdBasicAuthentication.Create;
IdHTTP1.Request.Authentication.Username:= '';
IdHTTP1.Request.Authentication.Password:= APIKey;//Encode64(APIKey);//Encode64(APIKey+':'+APIKey)
IdHTTP1.IOHandler:= myIOHandler;

uri:= 'https://api.datamarket.azure.com/Bing/SearchWeb/Web?'+
'Query=%27'+ query_text +'%27&$format=JSON&$top=50&$skip=0';
s:= IdHTTP1.Get(uri);

MS 文档非常差。

最佳答案

TIdHTTP 自动为您处理Basic 身份验证。只需设置 IdHTTP1.Request.BasicAuthentication := True,然后填写 IdHTTP1.Request.UsernameIdHTTP1.Request.Password 属性。您不需要直接处理 TIDBasicAuthentication

如果您想支持其他身份验证,例如 NTLM,只需将相关的 IdAuthentication... 单元或 IdAllAuthentication 单元添加到您的 uses子句。

如果您想支持 Indy 本身不支持的自定义身份验证,您还可以实现自己的自定义 TIdAuthentication 派生类。您可以调用 RegisterAuthenticationMethod(),以便 TIdHTTP 可以自动使用您的自定义类,也可以使用 TIdHTTP.OnSelectAuthorization 事件来分配该类根据每个请求手动进行。

关于delphi - Bing 搜索 API Azure 市场身份验证(Delphi + Indy),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11738518/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com