gpt4 book ai didi

php - SoapClient 中使用哪种方法(POST/GET)发送 HTTP 请求?

转载 作者:行者123 更新时间:2023-12-03 20:22:05 27 4
gpt4 key购买 nike

不知道我问的对不对!但我认为它的答案将指导我解决我的问题......

我正在尝试通过 SoapClient 调用一个函数,...这是我的代码的简化版本:

class SOAP_AuthStruct {
function __construct($user, $pass) {
$this->Username = strval($user);
$this->Password = strval($pass);
}
}


$soap_loc = "SET TO SOAP PATH";

$soap_opts = array (
'location' => $soap_loc,
'style' => SOAP_DOCUMENT,
'use' => SOAP_LITERAL,
'cache_wsdl' => WSDL_CACHE_NONE,
'exceptions' => FALSE,
'trace' => TRUE
);


$testclient = new SoapClient("soapcall.wsdl", $soap_opts);

$soap_auth = new SOAP_AuthStruct("USERNAME", "PASSWORD");
$soap_header = new SoapHeader($soap_ns,'AuthHeader',$soap_auth,FALSE);

// $a_param is filled with essential values
$soap_param = array("CreateTransaction" => $a_param);


try {
$result = $testclient->__soapCall("CreateTransaction", $soap_param, NULL, $soap_header, $output_headers);

echo $testclient->__getLastRequest();
echo "\n\n";
echo $testclient->__getLastResponse();
echo "\n\n";
echo $testclient->__getLastResponseHeaders();
echo "\n\n";

} catch (SoapFault $fault) {

trigger_error("SOAP Fault: (faultcode: {$fault->faultcode}, faultstring: {$fault->faultstring})", E_USER_ERROR);

}

我有一个正确请求格式的示例,getLastRequest() 函数显示请求具有正确的格式...

但作为回应,我有此错误消息:
HTTP/1.1 405 Method Not Allowed
X-Mashery-Responder: XXXXX.mashery.com
Allow: GET, HEAD, OPTIONS, TRACE
Content-Type: text/html
Server: Microsoft-IIS/7.5
X-Powered-By: ASP.NET
Date: Tue, 12 Apr 2011 18:34:29 GMT
Accept-Ranges: bytes
Content-Length: 1293

我认为(我不确定!)这可能是 SoapClient 使用 POST 方法发送请求,而我在响应头中找不到它:“Allow: GET, HEAD, OPTIONS, TRACE”

如果您对我的问题有任何解决方案,请告诉我!也是我问题的答案!

非常感谢您的帮助和您的时间;)

--------------------------------------------

更新:

好的,现在我知道它正在发送 POST 请求!

我将此行添加到我的代码中(在调用函数之后)
echo $testclient->__getLastRequestHeaders();

它返回:
POST /RimWebAPI/?api_key=APIKEY&sig=SIGNATURE   HTTP/1.1
Host: something.com
Connection: Keep-Alive
User-Agent: PHP-SOAP/5.1.6
Content-Type: text/xml; charset=utf-8
SOAPAction: "SOAP ACTION"
Content-Length: 2344

我仍在努力,但我将不胜感激任何帮助或 quide !

最佳答案

客户端 HTTP POST 是调用目录而不是脚本吗?我的意思是说/PATH_TO_API 可能是服务器上的一个目录,而您的脚本是该目录中的 index.php 。在这种情况下,您需要在 POST 命令后附加一个斜杠,以便网络服务器返回默认文档。
当您收到 405 错误时,服务器日志会说什么?此外,您可以将参数作为 GET 而不是 POST 发送。

关于php - SoapClient 中使用哪种方法(POST/GET)发送 HTTP 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5641140/

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