0

我正在尝试向 Web 服务发送请求,这是 WSDL: http ://www.smsmelli.com/class/sms/webservice/server.php?wsdl

经过长时间的研究,我理解无类型数组应该替换为字符串数组;到这里,它解决了,但我意识到我的 SOAP 不能正常工作。我检查了完全相同的 PHP 操作,然后我发现它在来自 SOAP 的 HTTP 标头中设置了身份验证中的凭据;

in WireShark:
-HyperText Transfer Protocol
--Authorization: Basic Y3LIZ577838sdf=
---Credentials: YourUserName:YourPassWord

如何在 Delphi 7 中使用 HTTPRIO SOAP 进行设置?

4

1 回答 1

0

我不知道 Delphi 7,但在 XE2 中,THTTPRIO 有一个 HTTPWebNode 属性,它有用户名和密码的设置。

在 HTTPWebNode 的 BeforePost 中,您可以对 HTTP 标头进行详细操作,例如:

procedure TFrmTestEWS.HTTPRIO1HTTPWebNode1BeforePost(
  const HTTPReqResp: THTTPReqResp; Data: Pointer);
const
   CONTENT_HEADER_EX2010 = 'Content-Type: text/xml; charset=utf-8';
begin
   // http://forum.delphi-treff.de/archive/index.php/t-31817.html
   // Need to exchange the Content-Type Header, because Exchange 2010 expects
   // 'Content-Type: text/xml; charset=utf-8' instead of
   // 'Content-Type: text/xml; charset="utf-8"' which is RFC conform and used by XE2
   HttpAddRequestHeaders(Data, PChar(CONTENT_HEADER_EX2010), Length(CONTENT_HEADER_EX2010), HTTP_ADDREQ_FLAG_REPLACE);
end;

希望这有助于

于 2013-01-07T15:39:50.987 回答